Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url rewriting IIS 7.5 Wcf路由服务。http头消失_Url Rewriting_Http Headers_Iis 7.5_Wcf Routing_Http Accept Language - Fatal编程技术网

Url rewriting IIS 7.5 Wcf路由服务。http头消失

Url rewriting IIS 7.5 Wcf路由服务。http头消失,url-rewriting,http-headers,iis-7.5,wcf-routing,http-accept-language,Url Rewriting,Http Headers,Iis 7.5,Wcf Routing,Http Accept Language,我已经设置了一个wcf路由服务(IIS 7.5),位于winforms客户端和后端服务器之间 我试图解决一个bug,它显然是由http头“Accept Language”的消失引起的。客户端在请求中发送此头,但根据fiddler(以及我观察到的行为),从iis发出的请求没有“Accept Language”头。这会导致服务器发回以en-US语言环境格式化的数据,而不是客户端指定的语言环境 至少,他们给出了一个如何做我想做的事情的例子。这是我在此基础上所做的配置(我已经在做url重写了)。serv

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

我试图解决一个bug,它显然是由http头“Accept Language”的消失引起的。客户端在请求中发送此头,但根据fiddler(以及我观察到的行为),从iis发出的请求没有“Accept Language”头。这会导致服务器发回以en-US语言环境格式化的数据,而不是客户端指定的语言环境

至少,他们给出了一个如何做我想做的事情的例子。这是我在此基础上所做的配置(我已经在做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_语言设置为url重写模块中允许的服务器变量。我遗漏了什么?

结果证明url重写不是罪魁祸首。url重写后发生的Wcf路由正在损坏我的http头

要解决这个问题,我只需要改变

<routing filterTableName="filterTable" />


在服务行为中

普雷斯托问题消失了!这也意味着我可以在我添加到配置中的url重写过程中删除对http头的处理


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

我怀疑我到目前为止所做的只是解决了在wcf路由发生之前发生的url重写问题。因此,我可能仍然需要解决wcf路由如何处理(或错误处理)我的http头。这可以在配置中设置,还是需要C#来实现?
<routing filterTableName="filterTable" soapProcessingEnabled="false" />