【发布时间】:2018-02-14 18:15:35
【问题描述】:
更新:为了简洁而重新措辞...
对于 ASP.NET MVC 项目,是否可以让 web.config 重写规则优先于 MVC 的 RegisterRoutes() 调用,或者是否可以仅针对特定域调用 IgnoreRoute?
我有一个 MVC 应用程序,它接受多个域(mydomain.com 和 otherdomain.com)的流量,该应用程序根据请求的主机提供不同的内容(即它是多租户的)。
我在 web.config 中配置了一个 URL 重写(反向代理),它应该只适用于特定的主机:
<rule name="Proxy" stopProcessing="true">
<match url="proxy/(.*)" />
<action type="Rewrite" url="http://proxydomain.com/{R:1}" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(mydomain\.com|www\.mydomain\.com)$" />
</conditions>
<serverVariables>
<set name="HTTP_X_UNPROXIED_URL" value="http://proxydomain.com/{R:1}" />
<set name="HTTP_X_ORIGINAL_ACCEPT_ENCODING" value="{HTTP_ACCEPT_ENCODING}" />
<set name="HTTP_X_ORIGINAL_HOST" value="{HTTP_HOST}" />
<set name="HTTP_ACCEPT_ENCODING" value="" />
</serverVariables>
</rule>
然而,如果应用程序的RegisterRoutes() 方法忽略了 web.config 配置的路由,MVC 应用程序似乎只会使用:
routes.IgnoreRoute("proxy");
然后,不幸的是,将忽略应用于两个域。非常感谢您的建议...
【问题讨论】:
-
可能很愚蠢,但是否可以通过将其作为该租户的一项功能启用它来仅忽略该租户的路由?
标签: asp.net asp.net-mvc iis azure-web-app-service orchardcms