【问题标题】:Serving up a URL rewrite through a directory-specifc Web.Config通过目录特定的 Web.Config 提供 URL 重写
【发布时间】:2013-11-22 20:32:06
【问题描述】:

我有一个第三方Javascript 软件包,它通过一些环节将客户端连接到后端服务器以进行聊天会话。它通过指向网络服务器上的一个目录来计算后端服务器的地址,该目录包含一个带有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.configs,并将配置中找到的任何规则应用于请求。

我应该如何告诉MVC 让开这个请求,以便IIS 可以按预期做事?我什至做出了正确的假设,还是我完全脱离了基础?

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

【问题讨论】:

    标签: javascript .net asp.net-mvc


    【解决方案1】:

    设置路线时,添加:

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

    【讨论】:

    • 我脑子里已经有了这样的想法,即使我设法让它路由到适当的目录,MVC 仍然会拒绝允许 IIS 处理 web.config。回想起来,这没有任何意义。感谢您快速、简洁的回复。这按预期工作。
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多