我发现在某些情况下我可以在调试时编辑源代码。使用 Visual Studio 内置网络服务器而不是 IIS 中的虚拟目录还有其他优点吗?
我在我的开发环境中使用 Windows XP 和 IIS 5 的本地实例。我从事多个项目,因此我使用多个虚拟目录来管理所有不同的站点。
有什么缺点吗?
我发现在某些情况下我可以在调试时编辑源代码。使用 Visual Studio 内置网络服务器而不是 IIS 中的虚拟目录还有其他优点吗?
我在我的开发环境中使用 Windows XP 和 IIS 5 的本地实例。我从事多个项目,因此我使用多个虚拟目录来管理所有不同的站点。
有什么缺点吗?
Visual Studio 的内置 Web 服务器称为 Cassini,以下是它的一些限制...
以前的所有回复都是很好的答案 - 这是 Cassini 的一个问题,可能需要在 destkop 上安装 IIS。
Cassini 在开发人员的上下文中运行,而不是作为 IIS 用户(IUSR_、IWAM 或在 WinXP x64 中的 w3wp 进程)。如果您有一个正在访问外部文件或创建临时文件的网站,这可能会有点痛苦。当您的开发人员作为其桌面的管理员运行时,这一点最为明显。
当您移动到服务器 IIS 时,您可以在 Cassini 中访问的某些内容将无法正常工作。使用 IIS_WPG 进行 CACL 通常是修复所需的全部,但如果您的开发人员没有考虑这一点,他们很快就会对部署感到非常沮丧。
Cassini 不支持虚拟目录。
看起来第三种选择即将推出:
内置服务器非常适合那些不想让开发人员在他们自己的机器上提供任何管理员访问权限来配置 IIS 的大型公司。
//
Visual Studio Web 服务器在路径上的宽容度较低。
它将拒绝像
http://localhost:52632/main//images/logo.jpg
IIS 那样提供链接。
这很模糊,但这意味着我们有很多修复工作要做,以摆脱所有的//
事件。
我遇到的另一个缺点是在使用自定义IPrincipal
/的 Forms 身份验证网站上IIdentity
。卡西尼会在AppDomains
没有警告(或通知)的情况下切换。
查看此博客文章了解更多信息。对此的头痛让我放弃了 Cassini 并坚持使用 IIS。
内置服务器处理 HTTPModules 的方式存在错误- 有一种解决方法,但我讨厌必须放入生产中永远不需要的代码。
您需要运行 Visual Studio 才能使用它(在正常情况下)
它只响应 localhost,因此您不能将链接http://simon-laptop:37473/app1
提供给朋友以通过网络查看您的站点
大缺点:让提琴手工作更难,因为本地主机流量不是通过代理发送的。
使用http://ipv4.fiddler:37473
是让 Fiddler 使用它的最佳方式。
如果您“Web 引用”内置 Web 服务器上 Web 服务的 URL,则端口可能会更改。除非您在菜单项目→属性选项页面中设置了“特定端口”。
这是我现在已经习惯的事情。我总是设置一个特定的端口。现在,当有时网络服务器崩溃时(我曾经发生过这种情况),我只需更改端口号,一切都很好。我认为重新启动也将解决此问题。
内置服务器意味着开发人员不必知道如何设置 IIS 来测试他们的站点。
您可能会争辩说这是一个缺点,而且 Windows 开发人员至少应该知道这么多 IIS。或者您可能会争辩说,不是系统管理员的开发人员根本不应该乱搞 Web 服务器。
Cassini 也不支持ASP Classic页面。这只是旧 ASP Classic 页面仍然存在的遗留项目的问题(例如我们工作中的 Web 应用程序)。
你不能使用虚拟目录:(
如果您在家里使用 XP Home 进行业余工作,则无法在本地安装 IIS。
内置服务器不可配置,它运行在一个奇怪的端口上,所以如果你指望特定的行为,它可能会很麻烦。
我经常两全其美,在 IIS 中创建应用程序,并使用内置的 Web 服务器进行更高效的调试。
Cassini 旨在成为一个轻量级的测试网络服务器。这个想法是开发人员不需要安装和配置 IIS 来测试他/她的应用程序。
如果您熟悉 IIS,并且您已经设置好并且您的机器可以处理它,请使用 IIS。卡西尼并不是要成为替代品。
在启用了 UAC 的 Vista 或 Windows 7 中使用 IIS 时,必须以管理权限运行 Visual Studio。如果执行此操作,则无法从 shell 拖放到 Visual Studio(即使您以管理员身份运行 explorer.exe 的实例)。
出于这个原因,我在大多数项目中都使用 Cassini。
仅供参考,Windows XP 64 位附带 IIS 6。
这是2年前开始的旧线程。我在谷歌搜索时偶然发现了UtilDev Cassini。对我来说看起来很有希望。至少它能够同时运行多个站点。该功能对我非常有用,因为我在 2 个不同的站点上工作,并且必须使用 IIS 在它们之间不断切换。
安装 IISAdmin,您可以在 IIS 5 中设置单独的站点,而不是使用虚拟目录。
内置的网络服务器不如 IIS 强大,但不需要设置,所以它只是一个折衷方案。
您可能并不总是希望您的开发项目暴露在您的 IIS 服务器(甚至是本地 IIS 服务器)上,因此内置服务器非常适合。
但是,如果您的应用程序要访问 Web 应用程序规范之外的资源,那么您可能需要在 IIS 中频繁调试,以便您的应用程序以受限权限运行,并且您可以看到痛点在哪里。
\aspnet_client
我们还看到 Visual Studio 内置服务器的一些问题,这些问题涉及一些将其脚本放入文件夹的第三方控件。
由于不在 IIS 下运行时该文件夹不存在,因此控件不起作用。总是使用 IIS 并避免奇怪的问题似乎要简单得多。
我发现的一个区别是开发服务器处理上传文件的方式与 IIS 不同。如果要上传的文件大于您的 Max_File_Size 设置,您将无法捕获错误。该页面刚刚消失并返回 500。
另一个缺点是它通过 gloabal asax 文件发送每个请求,该文件包括对图像和样式表的所有请求。这意味着如果您有代码可以处理文件名,例如查找,那么辅助文件也将得到处理。
同样通过 IIS,您不必担心会在您的 localhost url 中自动记住和设置一个愚蠢的端口号。这是卡西尼直接依赖的时髦东西......屁股很大。谁想记住一些随意的端口号。只需在 IIS 中运行该死的站点即可。简单明了。