gpt4 book ai didi

asp.net - MVC3 生成包含端口号的 URL,如何停止它

转载 作者:行者123 更新时间:2023-12-02 19:28:06 27 4
gpt4 key购买 nike

我们刚刚发现新的“云”托管存在问题。基本上已经配置了 NAT/端口转发,因为它们不允许多个内部 IP,以便可以为多个站点完成 SSL 证书。

这会导致在指定协议(protocol)的情况下生成的任何 MVC 路由出现问题。此外,如果尝试访问需要登录的 URL,则重定向的 https 登录 URL 中的 ReturnUrl 参数也包含端口号。

问题是 - 有什么方法可以告诉 MVC 永远不要包含端口号(即使存在),而不是使用 UrlHelpers 操作/路由方法重载来指定域,从而手动删除端口数量。

如果从上面看请求过程并不明显,这里有一个小例子:

  • 用户浏览器向网站发出请求
  • 服务器转发相同的 URL,但附加端口号
  • 页面已生成
  • 响应发送回用户浏览器。
  • 用户登录,但现在返回网址包含端口,因此当重定向时,用户获取的页面无法显示。

由于端口转发错误,这似乎会导致 MVC 路由变得困惑。对技术服务器端不太了解,我不确定这是否只是托管公司没有在 IIS 或 NAT 内容中正确配置某些内容,或者是否只是需要配置一些 web.config 内容才能使 MVC 生成正确的内容URL 就好像此端口不存在一样。

非常感谢任何提示或指示。

最佳答案

对我来说幸运的是,事实证明有一个配置解决方案(因为人们问“代码更改怎么样?” -> 我:“说真的?不,这一定是一个配置问题”)。

该解决方案实现起来很简单;将以下内容添加到 <appSettings> web.config 部分:

<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />

因此,当 ASP.NET/MVC 生成 URL 时,它将始终使用用户发出请求的网站的主机 header ,而不是端口转发版本,耶!

关于asp.net - MVC3 生成包含端口号的 URL,如何停止它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25606217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com