Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.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
C# 如何识别请求是否来自URL重写模块_C#_Iis_Url Rewriting_Arr - Fatal编程技术网

C# 如何识别请求是否来自URL重写模块

C# 如何识别请求是否来自URL重写模块,c#,iis,url-rewriting,arr,C#,Iis,Url Rewriting,Arr,抱歉,如果标题不清楚,基本上我有一个web代理,在端口80上侦听,并且我在IIS上设置了URL重写(web.config上的规则如下),确实如此 -> -> -> 我怎样才能做到这一点?或者有没有其他办法 非常感谢 Ming您可以尝试访问 Request.ServerVariables["HTTP_X_ORIGINAL_URL"] 并将其与Request.Url.PathAndQuery进行比较。或者 Request.RawUrl 还应包含原始URL。我最终找到了自己的解决方案,即在

抱歉,如果标题不清楚,基本上我有一个web代理,在端口80上侦听,并且我在IIS上设置了URL重写(web.config上的规则如下),确实如此

->


->

->

我怎样才能做到这一点?或者有没有其他办法

非常感谢

Ming

您可以尝试访问

Request.ServerVariables["HTTP_X_ORIGINAL_URL"]
并将其与Request.Url.PathAndQuery进行比较。或者

Request.RawUrl

还应包含原始URL。

我最终找到了自己的解决方案,即在IIS重写URL时添加查询字符串 Url重写模块足够聪明,可以将querystring arr=1附加到Url,而不管Url是否已经有查询字符串

然后我添加代码来检查querystring是否包含arr=1,如果包含,那么请求通过url重写来实现

<rule name="api-example" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
     <match url="^.*/api/.*$" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{QUERY_STRING}" pattern="(.*)" negate="false" />
      </conditions>
     <action type="Rewrite" url="http://localhost:8095/{R:0}?arr=1" appendQueryString="true" logRewrittenUrl="false" />
  </rule> 

Hi我试过了,HTTP_X_ORIGINAL_URL在重写URL之前只显示原始路径和查询字符串,但没有域值,如果我转发到另一个路径和查询字符串完全相同的web服务器,这将不会有帮助。而原始url根本没有帮助。
<rule name="api-example" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
     <match url="^.*/api/.*$" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{QUERY_STRING}" pattern="(.*)" negate="false" />
      </conditions>
     <action type="Rewrite" url="http://localhost:8095/{R:0}?arr=1" appendQueryString="true" logRewrittenUrl="false" />
  </rule>