自定义ServerVariable IIS

时间:2014-08-04 11:11:48

标签: c# iis url-rewriting web-config request.servervariables

我正在尝试使用url重写创建自定义服务器变量。 Url Rewrite for IIS生成以下配置条目

    <rewrite>
        <rules>
          <rule name="CName to URL - Rewrite" stopProcessing="true">
              <match url=".*" />
              <conditions>
                    <add input="{HTTP_HOST}" pattern="^(?!www)(.*)\.localfurnco\.de" />
              </conditions>
              <action type="Rewrite" url="?" appendQueryString="false" />
                <serverVariables>
                    <set name="HTTP_MANUFACTURER" value="{C:1}" />
                </serverVariables>
          </rule>   
        </rules>
    </rewrite>

但是当迭代服务器变量时,我无法找到HTTP_MANUFACTURER。 网址重写似乎有效,但我无法获得变量。

我正在尝试拨打地址: test.localfurnco.de/subdir/webservice.asmx?wsdl

C:1在这种情况下应该是:&#34; test &#34;。

如果有任何建议,我将不胜感激 提前谢谢

1 个答案:

答案 0 :(得分:0)

经过几个小时的努力,我自己想出来了。 这是最终的规则。

            <rule name="CName to URL - Rewrite" stopProcessing="false">
                <match url=".*" negate="false" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                    <add input="{SERVER_NAME}" pattern="^(?!www)(.*)\.localfurnco\.de" />
                </conditions>
                <action type="Rewrite" url="?CustomValue={C:1}" logRewrittenUrl="true" />
                <serverVariables>
                    <set name="HTTP_MANUFACTURER" value="{C:1}" />
                </serverVariables>
            </rule>   

使用此规则可以从C#访问ServerVariable“HTTP_MANUFACTURER”:

   string variable= httpContext.Current.Request.ServerVariables.Get("HTTP_MANUFACTURER");

朋友与我分享的另一个选择是:

   string value= HttpContext.Current.Request.Params.Get("CustomValue");

正如你所看到的,我重写了url并设置了一个参数,我通过模式分配了过滤后的值。

我希望这有助于其他人。