Reputation: 5917
I'm trying to understand the technical differences between using the Visual Studio built-in web server (Cassini) and IIS in a development environment. My specific setup is:
I've observed that Cassini allows me to edit the source while debugging, which IIS does not seem to support.
Beyond this, are there other technical differences between Cassini and IIS for web development?
Upvotes: 52
Views: 16413
Reputation: 3211
The built-in web server for Visual Studio is called Cassini and here are a few of its limitations...
Upvotes: 61
Reputation: 415755
The built-in server works well for larger corporations that don't want to give developers any administrator access on their own machines to configure IIS.
Upvotes: 5
Reputation: 415755
The built-in server isn't as configurable, and it runs on an odd port, so if you're counting on specific behavior it can be troublesome.
Upvotes: 1
Reputation: 82335
If your project resides in the IIS directory you can still edit code. It just depends if it has been published or not.
You will run into so many issues on the Cassini vs. IIS when you are debugging certain permission based scenarios, like Kerberos and NTLM authentication as well as issues like server compression, etc. All in all, the Cassini is still okay to develop with, but make sure you do extensive testing when publishing to IIS.
Upvotes: -1
Reputation: 6145
If you 'web reference' the URL for web services that are on the built-in webserver, the port might change. Unless you have set a "Specific port" mentioned in menu Project → Properties options page.
This is something I've gotten used to now. I always set a specific port. Now when sometimes the webserver crashes (I've had that happen), I simply change the port number, and all is well. I reckon restarting will also fix this.
Upvotes: 2
Reputation: 415755
The built-in server means the developer doesn't have to know how to set up IIS to test their site.
You could argue this is a disadvantage, and that a Windows developer should know at least that much IIS. Or you could argue that a developer who isn't a system administrator shouldn't be messing around with the web server at all.
Upvotes: 2
Reputation: 145950
The Visual Studio web server is less forgiving about //
in the path.
It will refuse to serve a link like
http://localhost:52632/main//images/logo.jpg
where IIS will do.
That's pretty obscure, but it means we have a lot of fixing to do to get rid of all the //
occurrences.
Upvotes: 5
Reputation: 1525
Cassini also does not support ASP Classic pages. This is only an issue for legacy projects where old ASP Classic pages still exist (like our web application at work).
Upvotes: 2
Reputation: 145950
You need to have Visual Studio running to use it (under normal circumstances)
It only responds to localhost, so you can't give the link http://simon-laptop:37473/app1
to a friend to view your site over the network
Big disadvantage: it's harder to get fiddler working, because localhost traffic isn't sent through the proxy.
Using http://ipv4.fiddler:37473
is the best way to get Fiddler working with it.
Upvotes: 3
Reputation: 145950
I often take the best of both worlds and create an application in IIS, and use the built-in web server for more efficient debugging.
Upvotes: 1
Reputation: 4793
Cassini is meant to be a lightweight test webserver. The idea is that a developer does not need to have IIS installed and configured to test his/her application.
Use IIS if you are familiar with it and you have it set up and your box can handle it. Cassini is not meant to be a replacement.
Upvotes: 1
Reputation: 9760
We've also seen some issues with Visual Studio built-in server regarding some third-party controls which put their scripts in the \aspnet_client
folder.
Since the folder isn't there when you're not running under IIS, the controls didn't work. It seems a lot simpler to always work with IIS and avoid strange problems.
Upvotes: 0
Reputation:
Another disadvantage I've run into is on a Forms authenticated website using custom IPrincipal
/IIdentity
. Cassini will switch the AppDomains
without warning (or notice).
Check this blog post for more.The headache on this made me drop Cassini and stick with IIS.
Upvotes: 5
Reputation: 47743
Also via IIS, you don't have to worry about automatically remembering and setting a stupid port number in your localhost url. That's something funky directly relied upon with Cassini...big pain in the ass. Who wants to remember some abritrary port number. Just run the damn site in IIS..plain and simple.
Upvotes: -1
Reputation: 702
Here's a reason for a third way: although UWS Pro is probably closer to IIS than Cassini (although inspired by Cassini and is from the vendor of the UltiDev Cassini fork), its main purpose is to be redistributable along with ASP.NET applications.
Upvotes: 1
Reputation:
Another dis-advantage is that it sends every request through the gloabal asax file which includes all requests for images and stylesheets. This means if you have code in there which does things with the file names, such as a look up, then the auxillary files willget processed too.
Upvotes: 0
Reputation: 10627
When you use IIS in Vista or Windows 7 with UAC enabled, you must run Visual Studio with administrative rights. If you do this, you can't drag an drop from your shell to Visual Studio (even if you run an instance of explorer.exe as administrator).
For this reason I use Cassini for most projects.
Upvotes: 2
Reputation: 108
One difference I've found is that the development server handles uploading files differently than IIS does. You can't trap the error if the file being uploaded is bigger than your Max_File_Size setting. The page just dies and returns a 500.
Upvotes: 0
Reputation: 4836
All the previous responses are great answers - here's one gottcha with Cassini that might require IIS on the destkop.
Cassini runs in the context of the developer, not as the IIS user (IUSR_, IWAM, or in WinXP x64, the w3wp process). This can be a bit painful if you've got a web site that is accessing external files or creating temp files. It is most evident when your developer is running as an Admin of their desktop.
When you move to the server IIS, something that you would have had access to in Cassini doesn't work the same. CACLing with the IIS_WPG usually is all it takes to fix, but if your developer is not thinking about this, they will quickly get quite frustrated with their deploy.
Upvotes: 16
Reputation: 17804
There's a bug in the way the built-in server handles HTTPModules - there is a workaround, but I hate having to put in code that'll never be needed in production.
Upvotes: 4
Reputation: 3362
The built-in webserver is a little less robust than IIS, but requires no setup so it is just a tradeoff.
You may not always want your development projects exposed on your IIS server (even your local IIS server) so the built-in server is good for that.
However, if your application is going to access resources outside of the norm for a web app then you may want to debug frequently in IIS so that your app will run with restricted permissions and you can see where the pain points will be.
Upvotes: 0
Reputation: 175593
Install IISAdmin, and you can setup separate sites in IIS 5, instead of using virtual directories.
Upvotes: 0
Reputation: 415755
If you do hobby work at home using XP Home, you can't install IIS locally.
Upvotes: 1