【问题标题】:IIS 7.5 Wcf routing service. http header disappearsIIS 7.5 Wcf 路由服务。 http标头消失
【发布时间】:2012-08-13 17:38:54
【问题描述】:

我已经设置了一个 wcf 路由服务 (IIS 7.5) 位于我的 winforms 客户端和后端服务器之间。

我正在尝试解决一个错误,该错误显然是由 http 标头“Accept-Language”的消失引起的。客户端在请求中发送此标头,但根据提琴手(以及我正在观察的行为),从 iis 发出的请求没有“Accept-Language”标头。这会导致服务器发回以 en-US 区域设置而不是客户端指定的区域设置格式的数据。

this 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 重写模块中允许的服务器变量。我错过了什么?

【问题讨论】:

  • 我怀疑我到目前为止所做的只是解决了在 wcf 路由发生之前发生的 url 重写。所以我可能仍然需要解决 wcf 路由如何处理(或错误处理)我的 http 标头的问题。这可以在配置中设置还是我需要 C#?

标签: url-rewriting http-headers iis-7.5 wcf-routing http-accept-language


【解决方案1】:

原来 url 重写不是罪魁祸首。 url 重写后发生的 Wcf 路由正在破坏我的 http 标头。

要修复它,我只需要更改

<routing filterTableName="filterTable" />

<routing filterTableName="filterTable" soapProcessingEnabled="false" />

在服务行为中

而且 presto - 问题消失了!这也意味着我可以在我添加到配置中的 url 重写期间删除对 http 标头的处理。

我的 CS 教授说:“如果你找不到问题,那是因为它在其他地方。”

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2013-01-21
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多