使IIS7.5网站成为应用程序

使IIS7.5网站成为应用程序,iis,visual-studio-2010,iis-7.5,Iis,Visual Studio 2010,Iis 7.5,我所做的应该很简单。在IIS6中,我只需转到网站上的属性,并从中创建/删除应用程序状态。然而,我一辈子都不知道如何将网站本身(而不是其下的虚拟目录)转换为应用程序 最终,我的问题在于使用Visual Studio 2010中的发布功能,因为它给了我以下错误:在应用程序级别之外使用注册为allowDefinition='MachineToApplication'的节是错误的。此错误可能是由于IIS中未将虚拟目录配置为应用程序造成的。我假设这是因为网站未配置为应用程序 如果我在我的网站下创建一个虚拟

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

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


如果我在我的网站下创建一个虚拟目录并将其升级为一个应用程序(通过右键单击它并选择
转换为应用程序
),那么一切都很好。但是我根本不知道如何对一个网站本身这样做,我需要这样做,因为我需要这个MVC2网站托管在
www.domain.com/
,而不是
www.domain.com/appname/
。我这样做完全错了吗?我是否错误地使用了VS2010,或者在IIS中丢失了一个选项?

我已解决了问题。事实证明,这个问题与IIS及其配置或诸如此类的东西无关,而是VS2010发布web应用程序方式的双重产物

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

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

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