Asp.net 使用卡西尼号而不是IIS的(dis)优势是什么?

Asp.net 使用卡西尼号而不是IIS的(dis)优势是什么?,asp.net,visual-studio,iis,cassini,Asp.net,Visual Studio,Iis,Cassini,我发现在某些情况下,我可以在调试时编辑源代码。在IIS中使用Visual Studio内置Web服务器而不是虚拟目录是否还有其他优势 我在我的开发环境中使用WindowsXP和IIS5的本地实例。我在几个项目上工作,所以我使用多个虚拟目录来管理所有不同的站点 有什么缺点吗?如果你在家使用XP home进行业余工作,你不能在本地安装IIS。安装IISAdmin,你可以在IIS 5中设置单独的站点,不使用虚拟目录。内置服务器适用于不想让开发人员在自己的机器上拥有任何管理员权限来配置IIS的大型公司。

我发现在某些情况下,我可以在调试时编辑源代码。在IIS中使用Visual Studio内置Web服务器而不是虚拟目录是否还有其他优势

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


有什么缺点吗?

如果你在家使用XP home进行业余工作,你不能在本地安装IIS。

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

内置服务器适用于不想让开发人员在自己的机器上拥有任何管理员权限来配置IIS的大型公司。

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

Visual Studio的内置web服务器名为Cassini,下面是它的一些限制

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

如果您的项目位于IIS目录中,您仍然可以编辑代码。这取决于它是否已经出版


在调试某些基于权限的场景时,您将在Cassini vs.IIS上遇到许多问题,例如,身份验证以及服务器压缩等问题。总之,Cassini仍然可以开发,但请确保在发布到IIS时进行广泛测试。

如果“web引用”内置web服务器上web服务的URL,则端口可能会更改。除非您设置了菜单项目中提到的“特定端口”→ 属性选项页


这是我现在已经习惯的。我总是设置一个特定的端口。现在,当有时候Web服务器崩溃时(我曾经遇到过这种情况),我只需更改端口号,一切都很好。我认为重新启动也会解决这个问题。

内置服务器意味着开发者不必知道如何设置IIS来测试他们的站点


您可能会认为这是一个缺点,Windows开发人员至少应该了解这么多IIS。或者,您可能会争辩说,不是系统管理员的开发人员根本不应该在web服务器上乱搞。

内置web服务器比IIS稍差一些,但不需要安装,因此这只是一种折衷

您可能并不总是希望在IIS服务器(甚至本地IIS服务器)上公开您的开发项目,因此内置服务器非常适合这样做


但是,如果您的应用程序要访问web应用程序规范之外的资源,则您可能需要在IIS中频繁调试,以便您的应用程序将在受限权限下运行,并且您可以看到痛点在哪里。

-,但是我讨厌必须输入生产中永远不需要的代码。

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

它将拒绝提供像这样的链接
http://localhost:52632/main//images/logo.jpg
IIS将执行的操作


这是相当模糊的,但这意味着我们要做大量的修复来消除所有的
/
事件。

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

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

  • 它只响应localhost,因此不能提供链接
    http://simon-laptop:37473/app1
    发送给朋友,通过网络查看您的站点

  • 最大的缺点:很难开始工作,因为本地主机流量不是通过代理发送的


使用
http://ipv4.fiddler:37473
是让Fiddler使用它的最佳方式。

我经常在IIS中充分利用这两个方面,创建一个应用程序,并使用内置web服务器进行更高效的调试。

Cassini是一个轻量级的测试web服务器。其思想是开发人员不需要安装和配置IIS来测试其应用程序


如果您熟悉IIS,并且已经设置好,并且您的箱子可以处理它,请使用IIS。Cassini并不是要取代它。

我们还看到Visual Studio内置服务器在某些第三方控件方面存在一些问题,这些控件将脚本放在
\aspnet\u client
文件夹中


因为当您不在IIS下运行时,文件夹不存在,所以这些控件无法工作。始终使用IIS并避免出现奇怪的问题似乎要简单得多。

前面所有的回答都是很好的答案-这里有一个关于卡西尼号的gottcha,可能需要在destkop上使用IIS

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


当您移动到服务器IIS时,您本来可以在Cassini中访问的东西就不起作用了。通常,修复IIS_WPG只需要一点技巧,但如果开发人员不考虑这一点,他们很快就会对其部署感到非常失望。

Cassini不支持虚拟目录。

我发现,开发服务器处理上传文件的方式与IIS不同。如果上载的文件大于最大文件大小设置,则无法捕获错误。页面刚刚关闭并返回一个500。

我遇到的另一个缺点是表单编写