Пользовательский серверПеременный IIS
Я пытаюсь создать пользовательский сервер с переменной URL переписать. Url Rewrite для 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. Перезапись URL, похоже, работает, но я не могу получить переменную.
Я пытаюсь позвонить по адресу: test.localfurnco.de/subdir/webservice.asmx?wsdl.
C: 1 в этом случае должно быть: "тест".
Буду благодарен за любые предложения и заранее спасибо
1 ответ
Попробовав несколько часов, я понял это сам. Вот итоговое правило.
<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>
С этим правилом можно получить доступ к ServerVariable "HTTP_MANUFACTURER" из C#:
string variable= httpContext.Current.Request.ServerVariables.Get("HTTP_MANUFACTURER");
Другой вариант, которым поделился со мной мой друг, заключается в следующем:
string value= HttpContext.Current.Request.Params.Get("CustomValue");
Как вы можете видеть, я переписываю URL и устанавливаю параметр, которому я присваиваю, по шаблону, отфильтрованное значение.
Я надеюсь, что это помогает кому-то еще.