3

我在 IIS 7.5 中的网站中有许多 Web 应用程序,我的 MVC2 Web 应用程序将在其中运行。

WebSite
    * Prod
    * Test1
    * Test2

我已将防火墙路由配置为重定向http://test1.mywebsite.com/xxxhttp://my.actual.website/Test1

我用过Url.Content("~/Content/Site.css"),但 CSS 没有被加载。查看网页的来源,网址被呈现为<link href="/Test1/Content/Site.css" ...>

我能做些什么来解决这个问题吗?可能使用 IIS URL 重写器模块,或者向我的防火墙添加更多规则。

4

3 回答 3

2

我将首先在服务器中启用失败的请求跟踪(http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/),看看它是否收到请求以及为什么。我猜它的解析不正确,因此您可以使用 URL Rewrite 来修复路径,或者使用 URL Rewrite 2.0 使用输出重写功能修复链接。

于 2010-07-01T18:03:21.687 回答
1

由于您的 IIS 网站中有应用程序(每个环境)(而不是路由中的单个应用程序),因此 ASP.NET MVC 在生成Url.Content中的 URL 时会考虑到这一点。

如果您想在您的网站中保留应用程序,您可以在防火墙级别(如果您的防火墙支持)、IIS 级别(URL 重写)或通过实施 Url.Content 的替代方法来重写 URL。由于源代码可用,您可以看到 MVC 框架是如何做到的,并且大部分工作都是在PathHelpers 类中完成的。

当然,如果您有额外的工作来开发/测试/维护您的重写规则或替代 URL 生成代码。我的观点是分离您的应用程序,以便每个 IIS 网站都有一个单独的应用程序/环境,这样您就没有额外的负担。

于 2010-07-12T19:07:21.850 回答
0

听起来防火墙也需要配置为重定向 CSS 和图像请求。

于 2010-07-01T16:32:54.143 回答