2

我在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>

此外,如果我在本地主机上创建子目录并将应用程序存储在那里,则路径将正确解析。

StyleBundle 也有同样的问题。知道我可以尝试什么吗?

4

1 回答 1

0

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

于 2017-01-02T11:38:39.157 回答