0

我们有一个运行 MVC3 应用程序的内部服务器,它已通过使用 ISA 服务器在我们的外部服务器上可用。

然而; 它没有应用 CSS,因为对外部站点的引用未正确映射。

我可以看到,两者之间的主要区别在于它在内部作为应用程序在内部服务器上运行(http://InternalServer/MVCSite

外部服务器被视为在子站点 ( ) 中作为应用程序运行http://ExternalDomain/SubSite/MVCSite,这就是世界所得到的。

查看生成的 URL 的源代码,我可以看到它的行为类似于内部站点,返回:@Url.Content("~/Content/Site.css")as /MVCSite/Content/Site.css

我一直在看这篇文章,看看它是否能说明问题:http: //support.microsoft.com/kb/885186

我认为可能是重定向无法处理站点结构的差异?因此,修改内部站点以反映外部布局将修复任何用途。内部InternalServer/MVCSite变成ExternalDomain/SubSite/MVCSite

当我发现事情时,我会添加更多。

4

1 回答 1

0

这个答案与 isa 无关,并且可能有一种正确的方法来配置它。但是,如果您找不到正确的解决方案,HttpRuntime.AppDomainAppVirtualPath可能会对您有所帮助。

而不是使用: @Url.Content("~/Content/Site.css"),您可以尝试@Url.Content(HttpRuntime.AppDomainAppVirtualPath + "Content/Site.css")

如果这不起作用,您可以使用反射覆盖 AppDomainAppVirtualPath 的值。看看这里:http ://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_24475811.html#a24591595 。

Dim vpathTypeName As String = "System.Web.VirtualPath, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
Dim virtualPath As Object = ReflectionHelper.Instantiate(vpathTypeName, New Type() {GetType(String)}, New Object() {"/"})
ReflectionHelper.SetPrivateInstanceFieldValue("_appDomainAppVPath", runtime, virtualPath)

它基本上用你需要的任何值更新一个静态字段。您可以使用 : 验证主机标头HttpContext.Current.Request.Url.Host并将值设置为//SubSite/

于 2013-03-11T12:01:38.617 回答