代码之家  ›  专栏  ›  技术社区  ›  Jaxidian

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

  •  3
  • Jaxidian  · 技术社区  · 14 年前

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

    最后,我的问题是使用Visual Studio 2010的发布功能,因为它给了我以下错误: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS. 我假设这是因为网站没有配置为应用程序。

    如果我在我的网站下创建一个虚拟目录并将其升级到应用程序(通过右键单击它并选择 Convert to Application ,那么一切都很好。但我根本不知道该如何处理网站本身,我需要这样做,因为我需要在 www.domain.com/ 而不是 www.domain.com/appname/ . 我这一切都错了吗?我是否错误地使用了VS2010,或者我是否在IIS中缺少某个选项?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Jaxidian    14 年前

    我已经解决了我的问题。事实证明,这个问题与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应用程序(有其他潜在好处)。总之,这是一个非常令人困惑的问题,有一些非常简单的解决方法。