IIS 重定向/重写 .asmx 服务

Posted

技术标签:

【中文标题】IIS 重定向/重写 .asmx 服务【英文标题】:IIS redirect/rewrite .asmx service 【发布时间】:2018-02-06 19:13:23 【问题描述】:

我已经四处寻找这个问题的答案,但找不到任何适合我确切情况的东西。

目前有以下设置:

RootApplication(sitea.bla) .NET 3.5

- ChildApplication (sitea.bla/service1) .NET 3.5

根应用程序正在 .NET 4.5 中重写,但 service1 应用程序不会在当前阶段更新,并将作为子应用程序删除。

我已将 service1 应用程序移至子域 (service1.sitea.bla),以便它可以在旧应用程序池中运行。

尽管我有多个引用原始端点的其他应用程序/服务/客户端,但它工作得很好。我已经设置了一个在浏览器中完美运行的 IIS 重定向

sitea.bla/service1/exampleservice.asmx 被重定向到 service1.sitea.bla/exampleservice.asmx

虽然通过客户端应用程序进行调用时它会失败,除非我手动将端点更改为新的子域。我也尝试过通过反向代理实现。

在不手动将所有端点更改为新子域的情况下实现此目的的最佳方法是什么?

【问题讨论】:

【参考方案1】:

您需要设置正确的重写规则:

1)你需要安装ARR module(你需要它,因为你将请求重写到不同的应用程序)

2) 在 IIS 管理器中你应该启用反向代理

2.1) 在服务器节点上点击“应用请求路由缓存”

2.2) 点击“服务器代理设置”,点击“启用代理”,然后点击“应用”

3) 在应用程序 sitea.bla 的 web.config 中添加此重写规则:

<rule name="rewrite service1" stopProcessing="true">
    <match url="^service1(.*)" />
    <action type="Rewrite" url="http://service1.sitea.blaR:1" />
</rule>

4) 尝试调用 sitea.bla/service1/exampleservice.asmx

【讨论】:

以上是关于IIS 重定向/重写 .asmx 服务的主要内容,如果未能解决你的问题,请参考以下文章

IIS 重写不起作用(但重定向起作用)

iis里URL重写重定向,http做301重定向https

IIS URL 重写模块:基于 QueryString 的重定向

使用iis 7重写/重定向去除前导零的数字并转发

IIS重写规则以重定向URL

IIS 上的 WordPress 301 重定向