我们有内部服务器运行MVC3应用程序,该应用程序已通过我们的外部服务器使用ISA服务器提供。
然而;它没有应用CSS,因为对外部站点的引用未正确映射。
我可以看到2之间的主要区别是内部它作为内部服务器上的应用程序运行(http://InternalServer/MVCSite
)
外部服务器被视为在子网站(http://ExternalDomain/SubSite/MVCSite
)中作为应用程序运行,这就是全世界所获得的。
查看生成的网址,我可以看到其行为类似于内部网站,并将@Url.Content("~/Content/Site.css")
作为/MVCSite/Content/Site.css
返回。
我一直在看这篇文章,看看它是否有任何亮点:http://support.microsoft.com/kb/885186
我认为重定向可能无法处理网站结构的差异?因此,修改内部网站以反映外部布局将修复任何用途。内部InternalServer/MVCSite
变为ExternalDomain/SubSite/MVCSite
当我发现事情时,我会添加更多。
答案 0 :(得分: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/