iis - 使IIS7.5网站成为一个应用程序

标签 iis visual-studio-2010 iis-7.5

我所做的应该很简单。在 IIS6 中,我可以直接转到网站上的属性并从中创建/删除应用程序状态。但是,我一辈子都想不出如何将网站本身(而不是其下的虚拟目录)转换为应用程序!

最终,我的问题是使用 Visual Studio 2010 的发布功能,因为它给我这个错误:在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的部分是错误的。此错误可能是由于 IIS 中未将虚拟目录配置为应用程序引起的。我假设这是因为网站未配置为应用程序。

如果我在我的网站下创建一个虚拟目录并将其提升为一个应用程序(通过右键单击它并选择 Convert to Application),那么一切都很好。但我根本无法弄清楚如何对网站本身执行此操作,我需要这样做,因为我需要托管在 www.domain.com/ 而不是 www.domain 的 MVC2 网站.com/应用程序名称/。我这样做是不是错了?我是否错误地使用了 VS2010,或者我是否缺少 IIS 中的选项?

最佳答案

我已经解决了我的问题。事实证明,该问题与 IIS 及其配置或类似问题无关,而是 VS2010 发布 Web 应用程序的方式的副产品。

因此,正如我们大多数人所做的那样,我们并没有真正调试 Cassini 下的应用程序 - 而是使用指向我们不断更改的源代码的 IIS。那么,使用发布功能的默认设置,VS2010 所做的是编译应用程序(和依赖项)并将适当的文件复制到项目根位置内名为“obj”的特殊子目录下的文件夹中。将要尝试部署的 Web 应用程序“副本”中包含待部署的 web.config 文件。此配置文件包含应包含在应用程序根目录中的 web.config 文件中的内容。但请记住,我们的源代码位于 IIS 应用程序中。因此,一旦生成此文件(在我们编译/构建发布之后),我们现在就违反了开发/构建机器上的 IIS 要求。

因此,只要 VS 成功发布应用并删除该临时副本,一切都很好。唯一的问题是 VS 不会删除该临时副本(在 ~/obj/Release/Package/PackageTmp 中),无论它是否成功。因此,一旦您尝试发布一次,您就无法成功编译您的应用程序,除非此错误提示 IIS 配置存在问题,并且此错误将阻止 future 的发布。

所以我的解决方法是在发布后删除 obj 文件夹。其他功能性解决方法包括将此设置为调试 IIS 应用程序目录路径之外的文件夹(对源代码控制系统有好处)或为 obj 文件夹下的调试/发布副本添加 IIS 应用程序(有其他潜在好处)。总而言之,这是一个非常令人困惑的问题,有一些非常简单的解决方法。

关于iis - 使IIS7.5网站成为一个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914509/

相关文章:

c# - ASP.NET 中的 session 超时警告

.net - IIS应用程序池PID

javascript - 使用带有 MPEG-Dash 的流畅流 .ism list

c# - 我的 vs2010 中没有应用程序文件对话框

iis-7.5 - 注册后允许用户浏览到 username.host.com

.net - 使用 Microsoft.Web.Administration 远程管理 IIS 时身份验证期间出现 COMException

iis - SignalR 连接挂起,大约 30 秒后调用客户端

c# - 在 Visual Studio 2010 语言服务中实现查找引用

c++ - 我应该使用哪个 C++ GUI 库

iis - 是否可以在 IIS 7.5 Url 重写模块规则中获取当前机器名称?