加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:10:45 所属栏目:百科 来源:网络整理
导读:如何从Owin(传递给HTTP请求的URL)获取原始URL,独立于Owin托管? 例如,http://localhost/myapp和http://localhost/myapp/都包含在IOwinRequest.Path中. PathBase包含always / myapp,Uri.OriginalString总是包含http://localhost/myapp/. (在ASP.NET中我会调用
如何从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字符串,因此您可以区分“!”而且,例如.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读