如何从Owin(传递给HTTP请求的URL)获取原始URL,独立于Owin托管?
例如,http://localhost/myapp和http://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] 举报,一经查实,本站将立刻删除。