微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何从Owin获取原始网址?

如何从Owin(传递给HTTP请求的URL)获取原始URL,独立于Owin托管?

例如,http://localhost/myapphttp://localhost/myapp/都包含在IOwinRequest.Path中. PathBase包含always / myapp,Uri.OriginalString总是包含http://localhost/myapp/.

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

原因:目前,我需要它来进行服务器端重定向添加尾随/如果它丢失(独立于主机).

解决方法

您可以通过访问用于接收请求的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字符串,因此您可以区分“!”而且,例如.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐