IIS和ASP.Net Web开发服务器的行为差异?

5
在开发过程中,我通常使用Web Development Server(有时称为Cassini)测试ASP.Net应用程序。偶尔,当我发布到真正的IIS环境时,我会注意到应用程序的行为有所不同。
那么,生产IIS服务器和ASP.Net Web Development Server之间在处理ASP.Net方面有什么区别呢?我不是指功能集的差异(很明显,IIS具有许多WDS中不存在的功能),而是它们处理ASP.Net的方式不同。
顺便说一下:在这个问题的回答中有一些注意到的差异,但我相信还有更多。

有很多类似的问题(请参见右侧列表),例如:http://stackoverflow.com/questions/1988022/how-would-you-compare-iis-cassini-as-production-servers - M4N
确实如此 - 我在我的问题中链接了其中一个更有帮助的答案。尽管如此,我仍在寻找比其他地方更全面的答案。 - Kramii
这个不应该是社区维基吗? - Chad Levy
2个回答

4

以下是我在这里和其他地方学到的一些内容:

  • 各自运行ASP.NET应用程序的服务器中的安全上下文不同。对于开发服务器,这是当前用户的帐户。对于IIS,这是通常具有有限权限的特殊用户(ASPNET或NETWORK SERVICES)的上下文。

  • 对于Web站点,开发服务器会将静态文件(如图像和样式表等)提交给ASP.NET授权。但是,IIS会使用授权规则提供静态文件。

  • 开发服务器不支持SMTP,因此您无法直接从该服务器发送电子邮件。

  • 开发服务器不支持HTTPS。

  • 两个服务器处理包含“//”的路径的方式存在差异。据报道,Dev服务器更宽容。

  • Dev服务器随机选择端口而不是标准HTTP端口80。


0

一些可能的差异:

  • 在使用cassini时,您无法使用虚拟目录。这可能会导致意外行为,因为缺少文件夹权限而在第一次部署时出现问题。(例如:您在本地机器上有一个/image/目录,但在IIS中/image/是指向其他位置的虚拟目录)
  • 某些第三方程序集(如ComponenArt Web DLL)会导致特定端口问题。最好使用IIS进行开发,以最小化部署时的兼容性问题。
  • 目标IIS的信任级别可能低于您的开发设置,这可能会导致故障,具体取决于您对IIS的操作,例如读取运行时间。

2
你最后提到的有点离题。在同一台机器上使用Cassini或IIS时,信任级别始终会评估为相同。当你部署到生产环境时,无论你是在Cassini还是IIS上开发应用程序,信任级别都不受服务器控制,所以不会有影响。 - Kev
抱歉,citronas先生的第一点观点是错误的。/v:“/”是默认设置,但您可以从Web属性页面和命令行指定任何深度的虚拟目录。第二点并没有太多意义,“有些人说”。第三点已经讨论过了。我别无选择,只能--。干杯。 - Sky Sanders
@code poet:1)我不知道。谢谢告诉我。2)我不想指明具体的控件,但你让我别无选择 ;) ComponentArt Web DLL 有这种问题。对我而言,曾经发生过在部署之前出现问题的情况,因为没有在Cassini上测试。从那时起,我只使用IIS来进行开发。 - citronas
该死。我之前的评论毫无意义:曾经有一次在部署之前遇到了问题,因为我没有在IIS上进行测试。 - citronas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接