Request.Url的值有可能会带端口号ASP.NET中,Request.Url可以获取当前的URL信息,不过,在使用的时候,有一点需要我们注意,在nginx负载下获取的Request.Url,会存在带端口号的情况,这时,如果在其他页面执行操作后,回跳到Request.Url的页面,则会出错。

Request.Url的值有可能会带端口号

1、一个常见的应用场景

在A页面点击提交按钮,如果用户没有登录,则跳转到登录页面,登录完成后,回跳到当前页面。

2、常见做法

利用Request.Url,获取当前页面,然后赋值给ReturnUrl参数,登录成功后,回跳到ReturnUrl参数指定的页面。

即:Response.Redirect("/user/login?ReturnUrl="+Request.Url)。

3、存在的问题

如果这个网站做了负载均衡,指定的网站端口号不是80端口,则使用Request.Url,获取的网站URL中,含有端口号,类似于:studyofnet.com:123/news/list。这样会跳到 studyofnet.com:123/news/list 页面时,则会报错。

4、解决方法

Response.Redirect("/user/login?ReturnUrl=http://www.studyofnet.com/" + Request.Url.Query)。

即:ReturnUrl后面明确指定当前页面的URL地址,然后通过 Request.Url.Query 获取URL问号后面的所有参数信息。

标签: