Custom ServerVariable IIS

本文关键字:IIS ServerVariable Custom | 更新日期: 2023-09-27 18:16:11

我正在尝试创建一个url重写的自定义服务器变量。为IIS重写Url生成以下配置项

    <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。url重写似乎工作,但我不能得到变量。

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

C:1在这种情况下应该是:"test"。

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

Custom ServerVariable IIS

试了几个小时后我自己弄明白了。下面是生成的规则:

            <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,并设置了一个参数,根据模式,我分配了过滤值。

我希望这能帮助到别人。