使用Cassini而不是IIS的(不利)优势是什么?

时间:2020-03-06 14:26:59  来源:igfitidea点击:

我发现有时候可以在调试时编辑源代码,使用Visual Studio内置的网络服务器代替IIS中的虚拟目录还有其他优点吗?

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

有什么缺点吗?

解决方案

如果我们使用XP Home在家进行业余爱好,则无法在本地安装IIS。

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

对于不想向开发人员提供在其自己的计算机上配置IIS的任何管理员访问权限的大型公司,内置服务器效果很好。

内置服务器不是可配置的,它在奇数端口上运行,因此,如果我们指望特定行为,可能会很麻烦。

Visual Studio的内置Web服务器称为Cassini,这里有一些限制...

  • 每个端口只能承载一个ASP.NET应用程序。
  • 它不支持HTTPS。
  • 它不支持身份验证。
  • 它仅响应本地主机请求。
  • 与IIS相比启动速度较慢

如果项目位于IIS目录中,则仍然可以编辑代码,这取决于它是否已发布。在调试某些基于权限的方案(如kerberos和ntlm身份验证)以及服务器压缩等问题时,我们会在Cassini vs IIS上遇到这样的问题。总之,Cassini仍然可以进行开发,但请确保我们可以发布到IIS时进行广泛的测试。

如果我们"网络参考"内置Web服务器上Web服务的URL,则端口可能会更改。除非已设置"项目"->"属性"选项页面中提到的"特定端口"。

这是我现在已经习惯的东西。我总是设置一个特定的端口。现在,当有时网络服务器崩溃(我曾经发生过这种情况)时,我只需更改端口号,一切就好了。我认为重新启动也会解决此问题。

内置服务器意味着开发人员不必知道如何设置IIS来测试其站点。

我们可能会辩称这是一个缺点,并且Windows开发人员应该至少知道那么多IIS。或者,我们可能会辩称,不是系统管理员的开发人员根本不应该与Web服务器混为一谈。

内置的Web服务器比IIS健壮一些,但是不需要设置,因此只是一个折衷。

我们可能并不总是希望开发项目在IIS服务器(甚至是本地IIS服务器)上公开,因此内置服务器对此非常有用。

但是,如果应用程序要访问Web应用程序规范之外的资源,则我们可能需要在IIS中进行频繁调试,以便应用程序可以在受限权限下运行,并且可以了解问题的出处。

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

Visual Studio Web服务器对路径中的//不太宽容。

它将拒绝提供类似以下的链接:
IIS将在其中运行的http:// localhost:52632 / main // images / logo.jpg。

这是相当晦涩的,但是这意味着我们需要做很多修复工作才能消除所有//事件。

卡西尼也不支持经典的ASP页面。对于仅旧ASP页面仍然存在的旧项目(例如正在使用的Web应用程序)而言,这只是一个问题。

  • 我们需要运行Visual Studio才能使用它(在正常情况下)
  • 它仅响应本地主机,因此我们不能将链接" http:// simon-laptop:37473 / app1"提供给朋友以通过网络查看站点
  • 极大的破坏:提琴手很难工作,因为本地主机流量不是通过代理发送的。

编辑:使用http://ipv4.fiddler:37473是使Fiddler与其一起工作的最佳方法。

我经常两全其美,在IIS中创建一个应用程序,并使用内置的Web服务器进行更有效的调试。

Cassini有望成为轻量级测试Web服务器。这个想法是,开发人员不需要安装和配置IIS即可测试其应用程序。如果我们熟悉IIS,并且已对其进行设置,并且可以使用它,则请使用IIS。卡西尼号不是替代品。

我们还看到了VS内置服务器与某些第三方控件有关的问题,这些控件将其脚本放在\ aspnet_client文件夹中。由于当我们不在IIS下运行时该文件夹不存在,因此控件无法正常工作。始终使用IIS来避免奇怪的问题似乎要简单得多。

以前的所有答复都是很好的答案,这是Cassini的一个问题,可能需要在destkop上使用IIS。

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

当我们移至服务器IIS时,在Cassini中可以访问的内容将无法正常工作。通常,仅通过IIS_WPG进行CACL修复即可,但是如果开发人员不考虑这一点,他们很快就会对部署感到沮丧。

卡西尼不支持虚拟目录

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

我遇到的另一个缺点是在使用自定义IPrincipal/IIdentity的经过Forms身份验证的网站上。 Cassini将在没有警告(或者通知)的情况下切换" AppDomains"。

请查看此博客文章以获取更多信息。对此的头痛使我放弃了Cassini并坚持使用IIS。

我们不能使用虚拟目录:(

在启用了UAC的Vista或者Windows 7中使用IIS时,必须以管理权限运行Visual Studio。如果这样做,我们将无法从外壳拖放到Visual Studio(即使我们以管理员身份运行explorer.exe实例)也是如此。

因此,我将Cassini用于大多数项目。

另一个缺点是,它会通过gloasal asax文件发送每个请求,其中包括对图像和样式表的所有请求。这意味着,如果我们在其中具有处理文件名的代码(例如查找),那么辅助文件也将得到处理。

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

似乎即将推出第三个选项:
IIS Express。

这是两年前开始的旧主题。我在谷歌搜索时偶然发现了UtilDev Cassini。对我来说看起来很有前途。至少它具有同时运行多个站点的能力。该功能对我真的很有用,因为我在2个不同的站点上工作,并且必须使用IIS在它们之间不断进行切换。