2

我正在使用下面的代码来生成一个完全合格的url并将其传回以json进行重定向。

returnUrl = Url.Action("ActionName", "Controller", 
                       new RouteValueDictionary(new { type= returnUrl }), 
                       HttpContext.Request.Url.Scheme, 
                       HttpContext.Request.Url.Authority);

returnUrl最初将有一个值,type1或者type2这就是为什么我给出 type asreturnUrl然后用 generate 替换它的值url,但它会生成

http://localhost:49518:49518/Controller/ActionName?type=type1
                     //^^^^^ Extra port added

并附加端口号49518两次。可能的解决方案是什么?为什么会这样?

4

1 回答 1

1

只需替换HttpContext.Request.Url.AuthorityHttpContext.Request.Url.Host.

因为 :

  • HttpContext.Request.Url.Authority返回域名系统 (DNS) 主机名或 IP 地址以及服务器的端口号
  • HttpContext.Request.Url.Host返回服务器的 DNS 主机名或 IP 地址。

在您的代码中,您使用的Url.Action是接受主机名而不是包含端口的权限的重载。

通过此修复,您的端口将被自动添加,并且不会出现端口重复。

于 2016-02-23T19:56:14.130 回答