【发布时间】:2016-05-07 01:26:18
【问题描述】:
我正在尝试为使用 net.tcp 绑定的 WFC 服务重写 URL(使用 IIS)。我有 WFC 服务,它托管在第一台机器上,一切正常 - 我可以毫无问题地使用它。 现在我有第二个 IIS 主机,我在其中创建了只包含 web.config 的应用程序(它应该将它的地址重写为第一台机器的 WCF),它看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="service/(.*)" />
<action type="Rewrite" url="net.tcp://192.168.1.60/service/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
应该重写的输入 URL 是这样的:
net.tcp//localhost/service/SampleService.svc
当我检查重写日志时,一切看起来都很好,但是当我使用此应用程序的地址进行连接时(应该将 url 重写为 WFC),我只收到没有 WCF 端点的错误。我尝试了许多 URL 重写规则的组合,但都是徒劳的。两个 ISS 应用程序都启用了协议:http、net.tcp、net.pipe,ARR 也启用了代理。
我没有找到任何关于重定向 net.tcp WCF 的线程,但是我从 URL Rewriting WCF services 得到了一些提示,但这都是关于 http 绑定的。 我不确定是否可以使用 IIS 重写我的服务 url,所以如果有任何其他方法,我期待任何建议。
【问题讨论】:
-
我认为这不适用于交叉绑定。你可以再拥有一个带有 http 绑定的端点……你为什么要重写 url?
-
我需要重写它以隐藏 WCF 服务的真实地址,我也不能在第二台机器上托管它们,因为它的性能太低(如果性能不重要,我会使用 http,但是就我而言,连接效率至关重要)
标签: c# wcf iis url-rewriting net.tcp