我已经设置了一个 wcf 路由服务 (IIS 7.5) 位于我的 winforms 客户端和后端服务器之间。
我正在尝试解决一个错误,该错误显然是由 http 标头“Accept-Language”的消失引起的。客户端在请求中发送此标头,但根据提琴手(以及我正在观察的行为),从 iis 发出的请求没有“Accept-Language”标头。这会导致服务器发回以 en-US 区域设置而不是客户端指定的区域设置格式的数据。
在这个 url上,他们举例说明了如何做我想做的事。这是我基于此所做的配置(我已经在进行 url 重写)。serverVariables 部分应该解决我的问题:
<system.webServer>
<!-- These url rewrite rules require the presence of the URL Rewrite 2.0 iis extension -->
<rewrite>
<rules>
<!-- Accept connections to service1.asmx by rewriting that part of the url to WcfRouter.svc/service1 -->
<rule name="service1Rule" stopProcessing="true">
<match url="^(.*)svc/service1.asmx" />
<serverVariables>
<set name="HTTP_ACCEPT_LANGUAGE" value="da-DK" />
</serverVariables>
<action type="Rewrite" url="{R:1}WcfRouter.svc/service1" />
</rule>
<!-- Ditto for service2.asmx -->
<rule name="service2Rule" stopProcessing="true">
<match url="^(.*)svc/service2.asmx" />
<serverVariables>
<set name="HTTP_ACCEPT_LANGUAGE" value="da-DK" />
</serverVariables>
<action type="Rewrite" url="{R:1}WcfRouter.svc/service2" />
</rule>
</rules>
</rewrite>
</system.webServer>
url重写工作正常。我唯一剩下的问题是 http 标头修改。在 IIS 管理器中,我已将 HTTP_ACCEPT_LANGUAGE 设置为 url 重写模块中允许的服务器变量。我错过了什么?