I'm writing some http handlers using vs 2010 on a win 7 virtual machine. I have not been able to discover how to configure the mappings for particular extensions and verbs using IIS 7 Express. For example
extension = Foo
Executable = ../aspnet_isapi.dll
Verbs = get, head, post
Does anyone know where I might find that info?
From the FAQ: IIS Express FAQ
Q: Does IIS Express use the same configuration system as IIS 7.x?
A: Yes, IIS Express uses the same applicationhost.config and
web.config files supported by IIS 7.x. The key difference is that with
IIS Express, the configuration is maintained on a per-user basis. In
particular, whereas IIS has a global “applicationhost.config” file,
IIS Express maintains a user-specific “applicationhost.config” file in
the %userprofile%\documents\IISexpress\config” folder. This lets a
standard user run IIS Express and also lets multiple users work on the
same machine independently, without conflicting with each other. Some
settings require Administrator user rights to set and modify (see
question above about running as a standard user).
Related
As part of our .NET deployment process we'd like to make a new website on IIS. The idea is to be able to run another set of smoke tests before making a site live - plus being able to immediately roll back to a previous version should something go wrong. We hope to have this all hooked up to Jenkins.
While IIS7 has a comprehensive suite of tools that allows us to throw together and configure a new website via PowerShell, IIS6 shares no such luxury.
While upgrading to IIS7 would obviously solve our issues, our servers currently run on Windows 2003.
Is there a way to do what we want in IIS6? Are we going about the issue the wrong way?
IIS6 configuration is stored in 2 xml files, MetaBase.xml and MSSchema.xml located in %SystemRoot%\System32\Inetsrv.
Check these links about available scripts for managing IIS sites, application pools etc:
Internet Information Services (IIS) 6.0 Resource Kit Tools
Managing IIS Configurations Using Scripts (IIS 6.0)
Administering Servers from the Command Line in IIS 6.0 (IIS 6.0)
How to manage Web sites and Web virtual directories by using command-line scripts in IIS 6.0
Regarding configuration of sites like default page, .NET version etc I couldn't find any script for that on Technet. But if it is in configuration xml, I think you can create some command line tool for that.
I have only read a bit about IIS Express, and am in the process of downloading and installing it now. It seems like i should be able to uninstall IIS proper and just make use of IIS Express when developing/debugging webserver-based technologies in visual studio (2010 SP1).
Is this a sane conclusion?
What development scenarios might not play well with IIS Express?
Are there cases wherein IIS proper would absolutely still be needed?
My use of IIS in the past has been for ASP.NET MVC cases, a few web service debugging sessions, etc. Obviously IIS proper is still needed for actually hosting the resulting solutions, but can i realistically "free up resources" and just use IIS Express on demand?
To my knowledge some known issues with IIS Express:
Only http/https protocols are supported
There is limited UI support (through Visual Studio and WebMatrix) to configure IIS Express. But you can configure it manually by editing applicationhost.config.
IIS Express runs as current logged on user, so you may run into issues like http://forums.iis.net/t/1175734.aspx
It will be slow because by default failed request tracing and console tracing are enabled (failed request tracing can be disabled by editing applicationhost.config file)
Kernel mode caching is not supported
Is there a way to ship a small webapp in MVC2 with IIS Express, so there will no need for installing it on IIS, what's the version, ohh I don't have cause I want to run this on Windows Vista Home, etc etc ...
Kind'a having a small exe and run the WebApp on the IIS Express, for those who prefer the web environment rather than a windows environment to work, and off course, been a webapp, it should be able to be access it from any computer on the ethernet.
From the IIS blog:
Distributing IIS Express
The official release allows you to
distribute the IIS Express MSIs as-is.
Since this is enabled by the licensing
agreement, you don’t need special
approval.
Note that you can’t distribute the IIS
Express official release in any other
way. For example, you can’t copy a
subset of the binaries that are
included in the MSI and ship them as
part of your product. Please review
the IIS 7.5 Express EULA before you
distribute IIS Express.
Source: http://blogs.iis.net/vaidyg/archive/2011/01/17/iis-7-5-express-official-release-highlights.aspx
Webdeploy is an alternative to WebDav, FTP, and FrontPage extensions. It also acts as an alternative to DFS for replicating websites. I found instructions for configuring Windows 2008, but I'm unclear how to set up 2003 especially when multiple sites / IP Addresses are present.
It is possible to install Web Deploy Tool 1.1 on Windows 2003 for IIS6. Generally this tool is used for synchronization between remote/local sources. You can refer to the following article about how to use Web Deploy Tool 1.1 on Windows Server 2003:
Synchronize IIS 6.0 Web Sites
http://learn.iis.net/page.aspx/445/synchronize-iis-60-web-sites/
However, it's not possible to use this tool to enable publishing from Visual Studio 2010 to the webserver. The reason is that this method relies on ‘Web Management Service’, which is newly introduced in IIS 7. This service can be used when there are some users delegated to manage certain sites or applications on the server. However, this service does not exist on Windows Server 2003.
IIS Web Management Service (WMSvc):
http://technet.microsoft.com/en-us/library/cc735010(WS.10).aspx
I use WebDeploy (MSDeploy) on 2003 servers to ensure content, IP addresses, certificates, etc remain the same across a MS NLB cluster. I also created a batch file to automate most of the different functions based on what I want to do (Full Server replication, single website, content only). Here are my notes on using the tool that I posted on my company's internal blog:
MSDeploy (http://www.iis.net/download/webdeploy) is a tool developed by Microsoft to make migrating, deploying, copying, and backing up websites easier. It was developed for IIS 7, but most features work in IIS 6. It can also be used to move a website from IIS 6 to 7 although I have not tested this. Some things to keep in mind when using MSDeploy are:
MSDeploy must be installed on both source and destination servers
The “Web Deployment Agent Service” must be running on both source and destination servers
Application Pools for the website must be created on the destination server before using MSDeploy or it will fail. I think this is fixed in IIS 7, but I am not 100% sure
When deploying a website, MSDeploy will attempt to put the files in exactly the same path on the destination server. If the path doesn’t exist on the destination server (like if the source path is D:\website and the destination server doesn’t have a D: drive it will fail)
The migrated website will have the exact same configuration as it did on the source IIS server. Some settings you might want to change after the move/copy are the website IP address and home directory path. You will need to make those changes manually on the destination server.
The metabase keys will need to be edited on a per-server basis since they are unique for each server (unless you created the sites using MSDeploy, then it uses the same key string across servers). As more and more sites get deployed with MSDeploy, the key strings will become universal for all servers since the metabase keys will be the same on all servers.
Or: how do I find the IIS metabase paths in Windows 7?
I used to just run aspnet_regiis -lk, but this is "Not supported in Windows Vista" according to aspnet_regiis help...
This is because starting with Windows Vista, a new version of IIS is shipped (IIS 7) which is a LOT different in many ways than the older IIS architecture.
To control the new IIS, you should either be using the IIS manager (UI) or if you want a console tool take a look at C:\Windows\System32\inetsrv\AppCmd.exe
If you want to list the app pools and their .NET versions:
> appcmd list apppool
APPPOOL "FlexLabs Bak" (MgdVersion:v4.0,MgdMode:Integrated,state:Stopped)
APPPOOL "OpenIdTest" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
APPPOOL "TestApp" (MgdVersion:v4.0,MgdMode:Integrated,state:Started)
Get the list of applications in IIS:
> appcmd list app
APP "FlexLabs/" (applicationPool:FlexLabs)
APP "TestApp/" (applicationPool:TestApp)
Get the list of Sites:
> appcmd list site
SITE "TestApp" (id:4,bindings:http/*:82:,state:Started)
(Note: these are examples, not all the actual data from my machine :P )
It can do a lot more then list, of course.. and in some ways it's a lot more powerful than than IIS manager.
Anything specific you're looking for?
UPD:
Quiting from here: http://mvolo.com/blogs/serverside/archive/2007/07/21/Anatomy-of-an-IIS7-configuration-path.aspx
If you have worked with IIS6 and previous versions of IIS, you are most likely familiar with the IIS metabase paths. You know, the ones that look like LM/W3SVC/1/ROOT. These metabase paths serve as a mechanism to identify a part of the IIS website hierarchy, or a url therein, for the purposes of read/writing their configuration settings.
[...]
IIS7 repaces the metabase with a whole new configuration system, based on a distributed hierarchy of XML configuration files also used by the .NET Framework/ASP.NET. This confguration system is fundamentally different from the metabase
Definitely check out this article, as I think it's exactly what you're looking for in this case
Also, see more info about it here:
http://learn.iis.net/page.aspx/125/metabase-compatibility-with-iis-7/
Basically you can install the "IIS 6 Metabase Compatibility" server role, and have some control over it with some old tools and scripts :)