我发现在某些情况下我可以在调试时编辑源代码,使用Visual Studio内置的Web服务器而不是IIS中的虚拟目录还有其他优点吗?
我在我的开发环境中使用Windows XP,以及IIS 5的本地实例。我处理多个项目,因此我使用多个虚拟目录来管理所有不同的站点。
有任何缺点吗?
答案 0 :(得分:58)
Visual Studio的内置Web服务器名为Cassini,这里有一些限制......
答案 1 :(得分:16)
所有以前的回复都是很好的答案 - 这里有一个与Cassini的gottcha,可能需要在destkop上使用IIS。
Cassini在开发人员的上下文中运行,而不是作为IIS用户(IUSR_,IWAM或WinXP x64,w3wp进程)运行。如果您有一个访问外部文件或创建临时文件的网站,这可能会有点痛苦。当您的开发人员作为其桌面管理员运行时,这一点最为明显。
当您移动到服务器IIS时,您在Cassini中可以访问的内容不起作用。使用IIS_WPG进行CACLing通常只需要修复,但如果您的开发人员没有考虑这一点,他们很快就会对部署感到非常沮丧。
答案 2 :(得分:9)
Cassini不支持虚拟目录
答案 3 :(得分:7)
看起来第三种选择即将推出: IIS Express
答案 4 :(得分:5)
内置服务器适用于那些不希望开发人员在自己的计算机上配置IIS的管理员访问权限的大型公司。
答案 5 :(得分:5)
我遇到的另一个缺点是使用自定义IPrincipal
/ IIdentity
在经过Forms身份验证的网站上。 Cassini将在没有警告(或通知)的情况下切换AppDomains
。
请查看此blog post了解更多信息。这让我头疼,让我放弃了卡西尼并坚持使用IIS。
答案 6 :(得分:5)
Visual Studio Web服务器对路径中的//
不太宽容。
它将拒绝提供以下链接:
IIS将执行的http://localhost:52632/main//images/logo.jpg
。
这很晦涩,但意味着我们需要做很多工作才能摆脱所有//
次出现。
答案 7 :(得分:4)
There's a bug in the way the built-in server handles HTTPModules - 有a workaround,但我不想放入生产中永远不需要的代码。
答案 8 :(得分:3)
您需要运行Visual Studio才能使用它(在正常情况下)
它只响应localhost,因此您无法将链接http://simon-laptop:37473/app1
提供给朋友以通过网络查看您的网站
重大缺陷:由于本地主机流量不是通过代理发送的,因此fiddler工作起来比较困难。
http://ipv4.fiddler:37473
编辑是让Fiddler使用它的最佳方法。
答案 9 :(得分:2)
您无法使用虚拟目录:(
答案 10 :(得分:2)
如果您“引用”内置Web服务器上的Web服务的URL,则端口可能会更改。除非您设置了项目 - >属性选项页面中提到的“特定端口”。
这是我现在已经习惯的东西。我总是设置一个特定的端口。现在有时候网络服务器崩溃了(我已经发生了这种情况),我只是改变端口号,一切都很好。我认为重启也会解决这个问题。
答案 11 :(得分:2)
内置服务器意味着开发人员不必知道如何设置IIS来测试他们的站点。
你可能会认为这是一个缺点,Windows开发人员至少应该知道那么多IIS。或者你可以争辩说,不是系统管理员的开发人员根本不应该搞乱Web服务器。
答案 12 :(得分:2)
Cassini也不支持经典的ASP页面。对于仍存在旧ASP页面的旧项目(例如我们的Web应用程序),这只是一个问题。
答案 13 :(得分:1)
在启用了UAC的Vista或Windows 7中使用IIS时,必须运行具有管理权限的Visual Studio。如果执行此操作,则无法将drop从shell拖动到Visual Studio(即使以管理员身份运行explorer.exe实例)。
因此我在大多数项目中使用Cassini。
答案 14 :(得分:1)
仅供参考,Windows XP 64位附带IIS 6。
答案 15 :(得分:1)
Cassini是一个轻盈的测试网络服务器。这个想法是开发人员不需要安装IIS并配置为测试他的应用程序。使用IIS,如果你比较熟悉它,你就可以设置它,你的盒子就可以使用它。卡西尼不是替代品。
答案 16 :(得分:1)
我经常充分利用这两个方面并在IIS中创建应用程序,并使用内置的Web服务器进行更有效的调试。
答案 17 :(得分:1)
答案 18 :(得分:1)
这是第三种方式的原因:尽管UWS Pro可能比Cassini更接近IIS(尽管受到Cassini的启发并来自UltiDev Cassini分支的供应商),其主要目的是{{3}与ASP.NET应用程序一起使用。
答案 19 :(得分:1)
内置服务器不是可配置的,它运行在一个奇数端口上,所以如果你指望特定的行为,它可能会很麻烦。
答案 20 :(得分:1)
如果您使用XP Home在家中做爱好工作,则无法在本地安装IIS。
答案 21 :(得分:0)
同样通过IIS,您不必担心在localhost网址中自动记住并设置一个愚蠢的端口号。这是卡西尼直接依赖的时髦......屁股上的巨大痛苦。谁想要记住一些有用的端口号码。只需在IIS..plain中运行该死的网站即可。
答案 22 :(得分:0)
另一个缺点是它通过gloabal asax文件发送每个请求,其中包括对图像和样式表的所有请求。这意味着如果你的代码中包含文件名的代码,例如查找,那么辅助文件也会被处理。
答案 23 :(得分:0)
我发现的一个区别是开发服务器处理上传文件的方式与IIS不同。如果要上载的文件大于Max_File_Size设置,则无法捕获错误。该页面刚刚死亡并返回500。
答案 24 :(得分:0)
我们还看到了VS内置服务器的一些问题,这些问题涉及一些将脚本放在\ aspnet_client文件夹中的第三方控件。由于当您未在IIS下运行时文件夹不存在,因此控件不起作用。总是使用IIS并避免出现奇怪的问题似乎要简单得多。
答案 25 :(得分:0)
内置的网络服务器不如IIS强大,但不需要设置,所以这只是一个权衡。
您可能并不总是希望在IIS服务器(甚至是本地IIS服务器)上公开您的开发项目,因此内置服务器对此有利。
但是,如果您的应用程序要访问Web应用程序的标准之外的资源,那么您可能希望在IIS中经常进行调试,以便您的应用程序将以受限制的权限运行,您可以看到痛点将在何处。
答案 26 :(得分:0)
安装IISAdmin,您可以在IIS 5中设置单独的站点,而不是使用虚拟目录。
答案 27 :(得分:-1)
如果您的项目位于IIS目录中,您仍然可以编辑代码,这取决于它是否已发布。当您调试某些基于权限的方案(如kerberos和ntlm身份验证以及服务器压缩等问题)时,您将在Cassini vs IIS上遇到此类问题。总而言之,Cassini仍然可以开发,但请确保您这样做发布到IIS时的广泛测试。