我在IIS 7.5中的网站中有许多Web应用程序,我的MVC2 Web应用程序将在其中存在。
WebSite
* Prod
* Test1
* Test2
我已将防火墙路由配置为从http://test1.mywebsite.com/xxx
重定向到http://my.actual.website/Test1
我使用过Url.Content("~/Content/Site.css")
但CSS没有加载。查看网页的来源,网址呈现为<link href="/Test1/Content/Site.css" ...>
我能做些什么来解决这个问题吗?可能使用IIS URL重写器模块,或者向防火墙添加更多规则。
答案 0 :(得分:2)
我首先在服务器中启用失败请求跟踪(http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/),以查看它是否收到请求以及原因。我的猜测是错误地解决了,所以你可以使用URL Rewrite来修复路径,或者使用URL Rewrite 2.0使用输出重写功能修复链接。
答案 1 :(得分:1)
由于IIS网站中有应用程序(每个环境)(而不是路由中的单个应用程序),ASP.NET MVC会在Url.Content生成URL时考虑到这一点。
如果要在网站中保留应用程序,可以在防火墙级别(如果防火墙支持)重写URL,在IIS级别(URL重写)或通过实现Url.Content的替代方法。由于源可用,您可以看到MVC框架是如何做到的,并且大部分工作都是在PathHelpers class中完成的。
当然,如果您有额外的工作来开发/测试/维护您的重写规则或替代URL生成代码。我的观点是将您的应用程序分开,以便每个IIS网站都有一个单独的应用程序/环境,这样您就不会有额外的负担。
答案 2 :(得分:0)
听起来防火墙也需要配置为重定向CSS和图像请求。