如果项目在子目录中运行,C#MVC StyleBundle和ScriptBundle不会呈现正确的路径

时间:2017-01-02 09:46:12

标签: c# asp.net-mvc teamcity scriptbundle stylebundle

我在 BundleConfig.cs 中有这个代码,它只包含一个脚本

bundles.Add(new ScriptBundle("~/bundles/ui-scripts").Include(
                        "~/Scripts/ui-scripts.js"));

在我的语言环境计算机( http://localhost:57210/ )上,这将呈现为

<script src="/Scripts/ui-scripts.js"></script>

在当地一切正常。

问题是,我们有在 Team City 上运行的测试服务器,其中项目在子文件夹下运行 (http://testserver.com/myApp/),但渲染的输出是相同的

<script src="/Scripts/ui-scripts.js"></script>

导致ui-scripts.js无法加载(404),因为它尝试从 http://testserver.com/Scripts/ui-scripts.js 加载脚本当然不存在,因为脚本在 http://testserver.com/对myApp /Scripts/ui-scripts.js

我希望框架能够实现〜指向项目的根目录,在我看来是http://testserver.com/myApp/

如果我启用优化

BundleTable.EnableOptimizations = true;

输出已优化,但仍然从错误的位置,再次缺少 myApp 子文件夹

<script src="/bundles/ui-scripts?v=mRQZjAGbYccSwhcFn4iouztfiK3Xjwik5TtdvD58fHM1"></script>

另外, 如果我不使用捆绑包,而是在_Layout.cshtml中我希望脚本出现,请写入这样的代码

<script src="~/Scripts/ui-scripts.js"></script>

然后在服务器上正确识别路径

<script src="/myApp/Scripts/ui-scripts.js"></script>

另外下, 如果我在localhost上创建子目录并在那里存储应用程序,则路径会正确解析。

StyleBundle也存在同样的问题。知道我能尝试什么吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题。测试服务器上的IIS配置存在问题。 该项目实际上已经为其分配了自己的子域,并且不应该从子目录运行。 摆弄IIS设置解决了这个问题。