我想使用ASP.NET MVC 4 捆绑和缩小功能,请假设我们运行调试模式,因此没有捆绑任何内容,但每个引用都简单地呈现给单个标签。本地一切正常:
例子
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
}
现在从视图调用@Scripts.Render("~/bundles/jquery")
时,会生成一个类似的标签:
<script src="/Scripts/jquery-1.8.2.js"></script>
如果我只写,结果是一样的:
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
但是当我将所有内容部署到 Internet 中的测试服务器时(仍然使用调试模式),启用了一些Url 重写,我将特定域或子域路由到特定文件夹。
例如,如果域sub1.example.com
然后转发到example.com/__sub1__
和在转发到的情况下sub2.example.com
等等example.com/__sub2__
。当我sub1.example.com
在浏览器中打开时,通常没有任何线索表明会发生这种情况,Url 没有改变,所有 Url 仍然有效,使用该Url.Content(...)
方法生成的引用也是如此。
但出于某种奇怪的原因,对@Scripts.Render("~/bundles/jquery")
now 的调用呈现如下内容:
<script src="/__sub1__/Scripts/jquery-1.8.2.js"></script>
请注意“/ sub1 ”部分,它是不应该生成的部分,并且永远不会出现在呈现的 html 代码中的某个位置,并且由于 url 重写转发失败而导致 404。
尽管...
<script src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
...仍然将正确的相对路径呈现到“/Scripts/jquery-1.8.2.js”。而且我从来没有遇到过像这样重写 URL 的其他问题。而且我不想摆脱这种重写。
显然,这同样适用于样式表。
有什么我可以尝试的想法吗?