我对MVC很新。最近我开发了一个站点并将其托管在代理服务器后面。我使用internalhostname / site / {controller} / {action} / {id}访问我的网站进行测试,效果很好。 但是,当我的用户连接网站时,他们会使用如下外部网址:externalhostname / apps / site / {controller} / {action} / {id}。现在,当我的视图尝试根据默认路由配置启动对控制器的调用时,生成的URL将变为externalhostname / site / {controller} / {action} / {id},notice" / apps"离开了。
嗯,这对我来说是一个众所周知的问题。因为在创建URL时,主机名不包含" / apps"。在常规ASP.NET页面中创建的其他站点中,我只是劫持URL创建并用主机/应用程序替换主机,这可以解决问题。但我不知道如何在MVC世界中做到这一点。
此外,我正在使用Telerik控件(对于MVC),它还通过控制器和操作发起请求,最终导致错误的URL。
路由配置是默认的。我确实尝试更改规则但所有这些只影响后面的url格式。没有什么可以让我改变它前面的行为。 我已经挣扎了几天,无法找到出路。感谢一些建议。谢谢。
我无法更改代理规则。这不是我的选择。
环境:MVC 4,IIS 7.0,如果这些问题。
答案 0 :(得分:0)
尝试在路线配置中添加新条目。
routes.MapRoute(
"Default2", // Route name
"apps/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults,
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
记下订单。