如何从mvc控制器中的Response头读取值?

时间:2018-01-22 14:34:19

标签: asp.net-mvc azure-functions azure-function-app-proxy

我无法从MVC Controller中的响应头获取值。我触发了azure函数HTTP并尝试将值传递给响应头" ClientIPADDR:MYCustomHeaders" 302重定向。那么如何从MVC控制器中的响应头读取值?

 Cache-Control:no-cache
    ClientIPADDR:MYCustomHeaders
    Content-Length:0
    Date:Mon, 22 Jan 2018 14:03:09 GMT
    Expires:-1
    Location:http://example-read-response-header.azurewebsites.net/home/index
    Pragma:no-cache
    Server:Microsoft-IIS/10.0
    X-AspNet-Version:4.0.30319
    X-Powered-By:ASP.NET

var ipAddress = Request.Headers [" ClientIPADDR"];

Request.ServerVariables.Get(" ClientIPADDR&#34);

尝试了这个,但无法获得价值。

修改:附加信息

这是azure函数,它将使用给定的URL进行302重定向,这将显示带有 azure函数代理 azure函数代理的google验证码页面的html页面

    [FunctionName("TestFunction")]
    public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "testExample/{token}")]HttpRequestMessage req, string token, TraceWriter log)
    {
        string ipAddress = string.Empty;
        if (req.Properties.ContainsKey("MS_HttpContext"))
        {
            ipAddress = ((HttpContextWrapper)req.Properties["MS_HttpContext"]).Request.UserHostAddress;
        }
        HttpResponseMessage errorResponse;
        errorResponse = req.CreateResponse(HttpStatusCode.Found);
        errorResponse.Headers.Add("ClientIPAddress", ipAddress);
        errorResponse.Headers.Location = new Uri("http://localhost:62418/Home/Index" + "?code=" + token);
        return errorResponse;
    }

此功能显示带有天蓝色代理路由的验证码html页面以形成操作属性,该属性将重定向到控制器操作方法我试图获取客户端IP地址,但它正在给我azure app service ip address。

<form name="ad" id="form1" action="/validate" method="post">
        <main class="main-padding">
           //google captcha html
            </div>
        </main>
    </form>

不使用代理

<form name="ad" id="form1" action="http://example-read-response-header.azurewebsites.net/home/index" method="post">
            <main class="main-padding">
               //google captcha html
                </div>
            </main>
        </form>

上面的POST方法给出了正确的IP地址。如果我不想在html中显示azurewebsites url并且使用代理使用给我azure app service url。我尝试在头文件中传递客户端IP地址但是控制器操作方法没有得到那个报头(Request.Header [&#34;端ClientIPAddress&#34;])。有没有其他方法来获取客户端IP地址?

0 个答案:

没有答案