c# - Controller 中的 Url.Action 两次生成端口

标签 c# asp.net-mvc-4 url.action

我正在使用下面的代码生成完全限定的 url 并将其作为 json 传回以进行重定向。

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

returnUrl 最初会有一个值 type1type2 这就是为什么我将类型指定为 returnUrl然后用生成的 url 替换它的值,但它生成

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

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

最佳答案

只需将 HttpContext.Request.Url.Authority 替换为 HttpContext.Request.Url.Host

因为:

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

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

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

关于c# - Controller 中的 Url.Action 两次生成端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586598/

相关文章:

c# - 如何检查 Enum 中是否存在来自 URL 的字符串值并将其在结果中的值分配给变量?

c# - 在 C# 应用程序中执行 JavaScript 函数

asp.net-mvc - 在 MVC 4 中的另一个表单中验证 JQuery UI 模式表单

c# - asp.net mvc 4.0 中的捆绑不包括所有 jquery 库?

c# - 如何在类文件中使用 Url.Action()?

jquery - 如何在@Url.Action中传递动态值?

c# - Realm .NET 其中 Contains() 查询抛出 System.NotSupportedException

c# - 无法加载文件或程序集 'Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

jquery - ASP.NET MVC 在页面加载后进行ajax 调用?

asp.net-mvc - 如何在MVC Url.Action中调用不同 Controller 中的不同方法?