ASP.NET开发服务器还是本地主机IIS?

26

目前我们的开发团队在他们的本地机器上使用IIS来设置所有的网站。我们正在考虑改用内置的ASP.NET开发服务器。

这是一个好主意吗?使用ASP.NET开发服务器的优缺点是什么?我们应该注意哪些问题?

谢谢。

NB: 运行在 Win XP / IIS 5 / VS2005上

编辑:

没意识到它叫Cassini..更多关于Cassini v IIS的答案请点击这里


Cassini是在开发阶段的旧名称。Cassini就像Atlas对于MS ASP.NET AJAX一样,是ASP.NET开发服务器。 - Darko
我在这里留下了这个链接,以便将来任何人都可以从中受益,因为它概述了IIS和ASP.NET开发服务器之间的核心区别- http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/core-differences-between-iis-and-the-asp-net-development-server-cs - Bibhu
11个回答

32

ASP.NET Dev WebService无法做到IIS做不到的事情(您可以设置断点等,只需将VS调试器附加到ASP.NET运行时即可)。

然而,ASP.NET Dev WebService并不代表真正的生产环境,因此当您部署到生产环境时,可能会遇到一些意想不到的困难。

因此,我强制要求所有开发都在本地机器上使用IIS进行。在IIS中配置站点并不需要太多工作。


2
同意。我在以那种方式运行项目时遇到了几个问题。你应该始终使用本地 IIS。 - EndangeredMassa
+1 绝对没错,本地 IIS 是避免(并在发布前检测)任何问题的最佳选择。 - Darko
4
本地IIS无法为你带来修改并继续功能的优势。将旧的Cassini替换为IIS7是理想的选择。 - Jaap
1
即将推出(或者在您阅读此文时已经可用)的是IIS Express,将IIS 7.5带给非管理员用户,并允许开发人员在主机操作系统为XP时使用IIS 7.x功能。请参见http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx。 - Tim Trout
1
-1 是因为你说“ASP.NET Dev WebService 无法做到 IIS 做不到的事情”。我认为你是错误的。(请参见 @Jaap 的评论。) - Sam
可能最好的折衷方案是使用checkin构建部署到IIS测试服务器。因此,在开发时,您可以在本地使用开发服务器,但在检入后,在IIS测试服务器上进行最终集成测试。 - AaronLS

25

这是一个非常好的想法。以下是一些原因:

  • 对于 Web 开发,您不再需要管理员访问权限(它仍然可能有所帮助)。
  • 测试快速更改并继续工作要容易得多,并且更快的迭代周期很好
  • 它可以简化开发环境的设置和部署。
  • Cassini 避开了在 Server 版本中存在但在 XP 版本的 IIS 中不存在的限制。

我知道唯一反对的观点是,如果您使用奇怪的端口号,则 Cassini 内置服务器无法完全模拟 IIS 的某些情况。我怀疑您永远不会遇到这些问题,而且使用 Cassini 作为主要开发环境并不排除开发人员也可以访问机器上的 IIS。实际上,我的首选设置是 Cassini 首先用于大多数小型工作,然后将代码部署到本地 IIS 进行更深入的测试,最后再将代码移回共享源代码库。

[编辑]
忘记了 URL 重写。您需要 IIS 才能进行此操作。内置的 XP IIS 的限制示例是您在 XP 中仅限于一个站点(可以有多个应用程序,但那是另一回事)。


7
Cassini将每个请求都传递到ASP.NET运行时,而IIS则不会。Cassini不能使用ISAPI,但IIS可以。您可以配置Visual Studio在启动应用程序时将本地主机设为IIS,并且它启动的速度比载入Cassini要快。 - FlySwat
1
我在这件事上和Joel持相同的看法。除非我遇到Cassini无法处理的问题(如URL重写),否则我对Cassini没有任何问题,并且发现它非常方便。 - rp.
1
有趣的是,像这样的回答被投票否决了。我认为所提出的观点是有价值的--但即使我不同意,投票否决也不是解决的方式。 - rp.
您需要管理员权限才能运行IIS吗? - missaghi
2
请注意,当我第一次编写此内容时,Windows 7和IIS 7均尚未推出。Cassini解决了Windows XP版本的IIS对开发人员的一些实际问题。 - Joel Coehoorn
显示剩余3条评论

5

我不得不在一个项目中切换回IIS,因为我需要设置一些虚拟目录,而在ASP.NET开发Web服务器上是不可能的。


5
如我在这里所述:https://dev59.com/e3VD5IYBdhLWcg3wDXJ3,您的开发人员需要知道Cassini作为本地用户运行,通常是开发人员的管理员帐户。开发人员将能够访问其帐户可以访问的任何文件或资源,这与他们在IIS 6服务器上看到的情况非常不同。
另一个非常重要的问题是,使用IIS和vdirs调试Web服务比使用单独的Cassini实例要容易得多。

2

我知道曾经有一个认证问题在Cassini(内置的开发服务器)上没有按照预期工作。

此外,如果您需要测试诸如ISAPI插件(例如重写器)之类的东西,我不确定在Cassini上如何操作。

不断变化的端口对我来说也相当令人不安。此外,对于解决方案中的每个Web项目,它都会启动另一个Casini服务器实例,每个实例占用20到50 MB的内存。

我一直使用IIS,它很容易设置,而且你们已经在使用它了...


同意端口号的问题。我们目前为链接到我们的开发网站生成RSS源,不认为我能够使其与Cassini一起工作。 - Nick
2
在您的网页项目属性屏幕的“Web”选项卡中,您可以指定一个静态端口。对于网站项目,这是在标准属性窗口中完成的。 - JasonS

2

我已经尝试过这两种方法,我更喜欢在本地使用IIS而不是使用内置服务器。至少这样可以保证最终部署设置更加一致。


1
我注意到的另一个区别是Cassini作为32位进程运行,你无法控制它,而你可以控制你的IIS应用程序池来禁止32位(假设你的IIS在64位服务器上运行)。如果你的Web应用程序将调用64位进程中的API,如SharePoint Foundation/Server 2010,则这变得尤为重要。当你使用Cassini作为调试服务器调试Web应用程序时,实例化对象时会出现“找不到URL的Web应用程序,请验证你已正确输入URL”的错误。如果你使用在允许访问SharePoint数据库的标识下以64位运行的应用程序池在IIS中进行调试,则可以正确地进行调试。

1
在VS12中,开发服务器非常慢,需要几秒钟才能下载2k字节的文件。这在vs10中没有发生过。当您有一堆jquery文件和css时,这是一个真正的问题。此外,每个页面都需要重新请求所有的css/js文件。非常非常缓慢的回归测试。

我从未注意到任何这样的延迟。你的安装或浏览器设置一定有问题。(我记得在使用localhost127.0.0.1时,Firefox发生了一些奇怪的事情,但我不记得是什么以及如何解决它) - Andrew Barber

1

我在使用asp.net开发服务器时遇到了以下限制:

  1. 不支持虚拟目录。如果您需要在应用程序中使用它们,IIS似乎是您唯一的选择。

  2. 经典asp页面无法在开发服务器上运行。因此,如果您有一个混合的Web应用程序(就像我现在的客户端一样),IIS似乎是解决方案。

  3. 如果您需要管理UI来配置设置,则IIS效果更好。

当然,IIS要求您是本地管理员。


1
此外,当使用IIS 5.1时,请确保获取JetStat IIS Admin,它添加了一些在IIS 5上默认禁用的功能,例如能够设置多个站点。

谢谢,我会看一下的,这样就不用添加代码来处理VDirs了。 - Nick

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