0

我有一个传入的请求 URL,它是:

http://localhost/MyService/myservice.svc?serverInfo&pVersion=00

我在 webconfig 中写了一条规则(在 IIS 管理器中使用 URL 重写):

<rule name="ServerInfo" stopProcessing="true">
                    <match url="myservice[.]svc[\?]serverInfo[&amp;]pVersion[=]([^]+)" />
                    <action type="Redirect" url="myservice.svc/folder/serverInfo/pVersion={R:1}" />
                </rule>

但它不起作用,因为我使用“?” 匹配 url 中的字符。

我应该如何更改正则表达式才能正常工作?

(我必须进行重定向/重写,因为它是一个安静的 WCF 服务并且它不支持传入 url 的类型)

4

1 回答 1

0

改为这样做:

<rule name="ServerInfo" stopProcessing="true">
  <match url="myservice.svc" ignoreCase="true" />

  <conditions logicalGrouping="MatchAll">
    <add input="{QUERY_STRING}" pattern="serverInfo&amp;pVersion=([^]+)" />
  </conditions>

  <action type="Redirect" 
          url="myservice.svc/folder/serverInfo/pVersion={C:1}" 
          appendQueryString="false" 
          redirectType="Found" />
</rule>
于 2013-11-07T16:10:03.823 回答