如何从Owin获取原始网址?

时间:2015-01-16 14:49:28

标签: c# .net owin

如何在Owin托管上获取Owin的原始网址(传递给HTTP请求的网址),独立

例如,http://localhost/myapphttp://localhost/myapp/都包含在IOwinRequest.Path /中。 PathBase始终包含/myappUri.OriginalString始终包含http://localhost/myapp/

(在ASP.NET中,我会调用HttpContext.Current.Request.RawUrl,它会返回/myapp/myapp/。)

原因:目前,我需要它来执行服务器端重定向以添加尾随/(如果它丢失)(独立于托管)。

1 个答案:

答案 0 :(得分:1)

您可以通过访问用于接收请求的HttpListenerContext来获取Owin中的原始Url。

    public static string RealUrlFromOwin(HttpRequestMessage request)
    {
        var owincontext = ((OwinContext) request.Properties["MS_OwinContext"]);
        var env = owincontext.Environment;
        var listenerContext = (System.Net.HttpListenerContext) env["System.Net.HttpListenerContext"];
        return listenerContext.Request.RawUrl;
    }

这不仅可以恢复Url中的尾随符号,还可以在应用任何解码之前获取Url字符串,因此您可以区分'!'和%21,例如。

相关问题