使用Cassini而不是IIS的(dis)优点是什么?

我发现在某些情况下,我可以在debugging时编辑源代码,还有使用Visual Studio内置的web服务器而不是IIS中的虚拟目录的其他优点吗?

我在我的开发环境和本地IIS 5实例上使用Windows XP。我在几个项目上工作,所以我使用多个虚拟目录来pipe理所有不同的站点。

有什么缺点吗?

内置的Visual Studionetworking服务器被称为卡西尼,这里有一些限制…

  • 它只能托pipe一个ASP.NET应用程序的每个端口。
  • 它不支持HTTPS。
  • 它不支持身份validation。
  • 它只响应本地主机请求。
  • 与IIS相比启动速度慢

所有以前的回答都是很好的答案 – 这里有一个卡西尼gottcha可能需要在destkop上的IIS。

Cassini在开发人员的上下文中运行,而不是作为IIS用户(IUSR_,IWAM或WinXP x64,w3wp进程)运行。 如果您的网站访问外部文件或创build临时文件,这可能会有点痛苦。 当您的开发人员以桌面pipe理员身份运行时,这一点最为明显。

当您移动到服务器IIS时,您在卡西尼中可以访问的内容不能正常工作。 CACLing与IIS_WPG通常是需要修复的,但是如果你的开发人员没有考虑到这个问题,他们很快就会对他们的部署感到沮丧。

卡西尼不支持虚拟目录

看起来像第三个选项即将推出: IIS Express 。

内置的服务器适用于不希望开发人员在自己的机器上进行任何pipe理访问的大型企业来configurationIIS。

我遇到的另一个缺点是在使用自定义IPrincipal / IIdentity经过Formsvalidation的网站上。 Cassini将会在没有任何警告的情况下切换AppDomains (或注意)。

检查这个博客文章更多 。这让我头痛下降卡西尼和坚持使用IIS。

Visual Studio Web服务器对path中//宽容度较低。

它将拒绝提供如下链接: http://localhost:52632/main/http://img.dovov.comlogo.jpg IIS将会执行的操作。

这是相当晦涩的,但意味着我们有很多修复,以摆脱所有的事件。

内置服务器处理HTTPModules的方式存在一个错误 – 有一个解决方法 ,但是我讨厌把代码放在生产中永远不需要的地方。

  • 您需要运行Visual Studio才能使用它(通常情况下)

  • 它只响应本地主机,所以你不能给链接http://simon-laptop:37473/app1给朋友,通过networking查看您的网站

  • 大缺点:因为本地主机stream量不是通过代理发送,所以很难让小提琴工作。

编辑:使用http://ipv4.fiddler:37473是最好的方式让小提琴与它一起工作。

如果您“web引用”内置web服务器上的Web服务的URL,那么端口可能会更改。 除非你已经设置了项目 – >属性选项页面中提到的“特定端口”。

这是我现在习惯的东西。 我总是设置一个特定的端口。 现在,当有时Web服务器崩溃(我曾经发生过),我只是改变端口号,一切都很好。 我认为重新启动也将解决这个问题。

内置的服务器意味着开发人员不必知道如何设置IIS来testing他们的网站。

你可能会认为这是一个劣势,一个Windows开发者至less应该知道那么多的IIS。 或者你可能会争辩说,一个不是系统pipe理员的开发人员根本不应该混淆networking服务器。

卡西尼也不支持传统的ASP页面。 这只是旧的ASP页面仍然存在的遗留项目的一个问题(如我们的Web应用程序在工作)。

你不能使用虚拟目录:(

如果您在家中使用XP Home做爱好工作,则无法在本地安装IIS。

内置的服务器不是可configuration的,它运行在一个奇怪的端口,所以如果你指望具体的行为可能会很麻烦。

我经常采用两全其美的方式,在IIS中创build应用程序,并使用内置的Web服务器进行更高效的debugging。

卡西尼是一个轻的testingnetworking服务器。 这个想法是,开发人员不需要安装IIS并configuration为testing他的应用程序。 使用IIS,如果你有它的家庭,你有它的设置和你的盒子可以处理它。 卡西尼不是一个替代品。

在启用了UAC的Vista或Windows 7中使用IIS时,必须使用pipe理权限运行Visual Studio。 如果你这样做,你不能从你的shell拖放到Visual Studio(即使你以pipe理员身份运行explorer.exe的一个实例)。

基于这个原因,我在大多数项目中使用Cassini。

仅供参考,Windows XP 64位附带IIS 6。

这是两年前开始的一个老话题。 我只是偶尔发现了UtilDev Cassini 。 看起来对我很有希望。 至less它能够同时运行多个站点。 该function对我来说非常有用,因为我在2个不同的站点上工作,必须使用IIS不断切换它们。

这是第三种方式的原因:虽然UWS Pro可能比Cassini更接近IIS(虽然受到Cassini的启发,并且来自UltiDev Cassini fork的供应商),但其主要目的是随着ASP.NET应用程序一起再分发 。 在这里输入图像描述

安装IISAdmin,您可以在IIS 5中设置单独的站点,而不是使用虚拟目录。

内置的networking服务器比IIS稍微弱一些,但不需要设置,所以这只是一个折衷。

您可能并不总是希望您的开发项目暴露在您的IIS服务器上(即使是本地的IIS服务器),因此内置的服务器对此很有帮助。

但是,如果您的应用程序要访问networking应用程序规范之外的资源,那么您可能需要在IIS中经常进行debugging,以便您的应用程序将以受限制的权限运行,并且您可以看到痛苦点的位置。

我们也看到了VS内置服务器的一些问题,关于一些第三方控件,它们的脚本放在\ aspnet_client文件夹中。 由于该文件夹不存在,当您不在IIS下运行,控件不起作用。 总是使用IIS并避免奇怪的问题似乎更简单。

我发现一个区别是开发服务器处理上传文件不同于IIS。 如果上传的文件大于Max_File_Size设置,则无法捕获错误。 该页面刚刚死亡,并返回一个500。

另一个不利之处是,它通过全局asax文件发送每个请求,其中包括对图像和样式表的所有请求。 这意味着如果你有代码在那里做文件名的事情,比如查找,那么辅助文件也会被处理。

另外通过IIS,您不必担心自动记住并在您的本地主机url中设置一个愚蠢的端口号。 这是卡西尼直接依赖的东西…屁股大痛苦。 谁想记住一些无聊的口岸号码。 只需运行在IIS.plain该死的网站,并简单。

如果您的项目驻留在IIS目录中,您仍然可以编辑代码,只要取决于是否已经发布。 在debugging某些基于权限的场景(如kerberos和ntlm身份validation以及服务器压缩等问题)时,您将遇到有关Cassini vs IIS的问题。所有Cassini仍然可以使用,但请确保您发布到IIS时进行广泛的testing。