【问题标题】:Can a site's subdirectory run in its own app pool, with its own web.config?站点的子目录可以在其自己的应用程序池中运行,并具有自己的 web.config 吗?
【发布时间】:2011-08-02 01:12:21
【问题描述】:

我正在运行 Windows Server 2008,我正在尝试设置以下内容:

  • 在 .NET 4.0 集成应用程序池中运行的网站(使用自己的专用应用程序池
  • 在 .NET 2.0 应用程序池中运行的子目录(我创建了一个子文件夹,然后转换为应用程序,并将其放入自己的应用程序池中)

在子目录中运行应用程序时,我收到一个 500 服务器错误,说子目录没有读取根站点的 web.config 的权限。

我不希望它的子目录读取根站点的 web.config,因为它有自己的。我假设由于它们位于不同的应用程序池中,子目录会读取它自己的 web.config,甚至不一定知道根站点的 web.config。

如何做到这一点?

【问题讨论】:

    标签: .net web-applications windows-server-2008 application-pool


    【解决方案1】:

    web.config 总是由多层组成; .NET 主目录(在 CONFIG 下)中的“master”、根 web.config 和 每一层 - 特别是包括应用程序中的子目录。

    简而言之,是的:它需要对任何父 web.config 文件的读取权限。

    【讨论】:

    • 如果父母使用 .NET 4.0,我将无法运行 .NET 2.0 应用程序?我的想法是 .NET 2.0 应用程序的 Web.config 与 .NET 4.0 应用程序不同,所以它可能不了解某些 .NET 4 细节?是否可以将子目录设置为 IIS 中其自己站点中的子域?
    • @Dan - 在我上一个雇主的时候,我们玩得很开心;老实说,这很痛苦——尤其是对于在不同版本中不满意的配置文件部分。 IIRC我们使用了一个技巧,使用条件包括基于站点路径;它既复杂又脆弱——我不确定我是否推荐它。
    • 微软对此问题的官方解决方案是混合使用应用程序请求路由和 IIS 重写来代理请求。有关完整说明,请参阅docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/…。通常这样做的动机是处理在不同机器上运行的子目录,但您仍然可以在一台内部机器上使用此解决方案。就个人而言,我通过对在主应用程序内运行的简单反向代理执行 MapPageRoute 手动完成此操作。
    • 也就是说,我手动执行此操作的原因是为了可以在与主要内容不同的服务器上生成布局内容。是的,这意味着我需要将表单帖子路由到父计算机或代理计算机,具体取决于表单目标。该解决方案出奇地强大。
    猜你喜欢
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多