通过特定的Web.Config目录提供URL重写

Serving up a URL rewrite through a directory-specifc Web.Config

本文关键字:URL 重写 Config Web      更新时间:2023-09-26

我有一个第三方Javascript软件包,它可以跳过一些障碍,将客户端连接到后端服务器以进行聊天会话。它通过指向web服务器上的一个目录来计算后端服务器的地址,该目录包含一个带有URL重写规则的web.config,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                <match url="(.*)" />
                <action type="Rewrite" url="http://myServer:1234/{R:1}" />
            </rule>
        </rules>
    </rewrite>
</system.webServer>

我想通过MVC.Net应用程序提供这个Javascript,以处理需要进行的一些用户设置,这样我就可以传递一些自定义参数。问题是,当JS尝试使用重写规则请求包含web.config的子目录时,MVC(可以理解)会介入并尝试将该请求与控制器/操作组合匹配。

可以创建一个具有适当命名操作的控制器来响应URL,但我不认为将web.config's内容作为文字文本来解决我的问题。我的理解是,IIS在请求目录时读取该目录中的任何web.config,并将配置中的任何规则应用于请求。

我应该如何告诉MVC为这个请求让开,这样IIS才能按预期行事?我是做出了正确的假设,还是完全偏离了底线?

例如,有问题的目录的URL将类似于http://somesite.com/Server1/,并且在文件系统中,Server1文件夹将存在于站点根目录中,仅包含上面详细介绍的web.config。

设置路线时,添加:

routes.IgnoreRoute("Server1/{*.pathInfo}");