我使用下面的代码生成完全限定的url
并将其作为json
传回给重定向。
returnUrl = Url.Action("ActionName", "Controller",
new RouteValueDictionary(new { type= returnUrl }),
HttpContext.Request.Url.Scheme,
HttpContext.Request.Url.Authority);
returnUrl
最初的值为type1
或type2
,这就是为什么我将类型设为returnUrl
,然后将其值替换为生成的url
},但它会生成
http://localhost:49518:49518/Controller/ActionName?type=type1
//^^^^^ Extra port added
并将端口号49518
追加两次。什么可能解决这个问题?为什么会这样?
答案 0 :(得分:2)
只需将HttpContext.Request.Url.Authority
替换为HttpContext.Request.Url.Host
即可。
因为:
HttpContext.Request.Url.Authority
返回服务器的域名系统(DNS)主机名或IP地址以及端口号。HttpContext.Request.Url.Host
返回服务器的DNS主机名或IP地址。在您的代码中,您使用的是Url.Action
的重载,它接受主机名而不是包含端口的权限。
使用此修复程序,您的端口将自动添加,并且不会有端口重复。