gpt4 book ai didi

iis-7 - 为什么当 System.Web.Routing 处于事件状态时,反向代理重写规则停止工作?

转载 作者:行者123 更新时间:2023-12-01 12:55:55 24 4
gpt4 key购买 nike

将其归结为最简单的规则:

      <rule name="Reverse Proxy" stopProcessing="true">
<match url="^external/(.*)" />
<action type="Rewrite" url="http://some-site/{R:1}" />
</rule>

(“启用代理”在服务器级别的 ARR 服务器代理设置中选中)。

上面的重写规则在一个非常简单的测试应用程序中运行良好,其中 web.config 包含该部分,它在 Web 表单应用程序中运行良好,但如果我将相同的规则放入 MVC3 应用程序(在同一台机器上,所以相同的配置对于更高级别的 IIS)它永远不会有任何影响;请求流过。

如果它只是重​​写(而不是反向代理),它可以正常工作,例如,
          <rule name="rewrite to internal" stopProcessing="true">
<match url="^internal/(.*)" />
<action type="Rewrite" url="different-internal/{R:1}" />
</rule>

……没事。

如果我添加,我可以让反向代理规则工作
        routes.IgnoreRoute("external/{*pathInfo}");

在 Global.asax.cs 类中,这样我对 external/* 的请求就不会命中默认 Controller ,但我不明白为什么。我认为 URL 重写模块在路由之前启动(参见 http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/ ),所以我希望它们之间不会发生冲突。

路由模块是否在 URL 重写模块中添加了“虚拟”重写规则,从而覆盖了我声明的重写规则?

最佳答案

我遇到了同样的问题,我花了一整天才找到 the solution.

  • 找到:Web.config 文件中的 ServoceModel 标记并添加 serviceHostingEnvironment 代码,如下所示:
          <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    </system.serviceModel>

  • 这将允许将路由传递给 IIS 来处理它。

    还有一个提示,我建议任何在 MVC 项目中遇到路由问题的人安装 Remote Debugger通过 NuGet。这将告诉您何时激活哪些路线。

    关于iis-7 - 为什么当 System.Web.Routing 处于事件状态时,反向代理重写规则停止工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9841241/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com