我们刚刚发现了新的“云”托管问题。 已经配置了基本的NAT /端口转发,因为它们不允许多个内部IP,因此可以为多个站点完成SSL证书。
这会导致在指定协议的情况下生成的任何MVC路由出现问题。 此外,如果尝试转到需要登录的URL,则重定向的https登录URL中的ReturnUrl参数也具有端口号。
问题是 - 是否有任何方法告诉MVC永远不要包含端口号,即使存在一个端口号,缺少使用UrlHelpers操作/路由方法重载,允许您指定域并因此手动剥离端口号。
如果从上面看不出请求过程是什么样的,这里有一个小例子:
由于端口转发malarkey,这似乎导致MVC路由变得混乱。 不太了解技术服务器端我不确定是否只是托管公司没有在IIS或NAT中正确配置某些东西,或者是否只有一些web.config内容需要配置以使MVC生成正确的URL好像此端口malarkey不存在。
最值得赞赏的任何提示或指示。
答案 0 :(得分:7)
幸运的是,事实证明有一个配置解决方案(因为人们问“代码更改怎么样?” - >我:“说真的?不,这一定是配置问题”)。
解决方案易于实施;将以下内容添加到web.config的<appSettings>
部分:
<add key="aspnet:UseHostHeaderForRequestUrl" value="true" />
因此,当ASP.NET / MVC生成URL时,它将始终使用用户请求的网站的主机头而不是端口转发的版本,yay!