我在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/Scripts/ui-scripts.js中。
我希望框架能够意识到~指向项目的根,在我的例子中它是http://testserver.com/myApp/
如果我启用优化
BundleTable.EnableOptimizations = true;输出呈现优化,但仍然来自错误的位置,再次缺少myApp子文件夹。
<script src="/bundles/ui-scripts?v=mRQZjAGbYccSwhcFn4iouztfiK3Xjwik5TtdvD58fHM1"></script>Additionally,如果我不使用包,而是在我希望脚本出现的_Layout.cshtml中使用,请按如下方式编写代码
<script src="~/Scripts/ui-scripts.js"></script>然后在服务器上正确识别路径,以便
<script src="/myApp/Scripts/ui-scripts.js"></script>Additionally,如果我在本地主机上创建子目录并将应用程序存储在那里,则路径将被正确解析。
同样的问题也适用于StyleBundle。知道我能尝试什么吗?
发布于 2017-01-02 11:38:39
我发现了问题。测试服务器上的IIS配置存在问题。项目实际上有自己的子域分配给它,不应该从子目录运行。篡改IIS设置解决了这个问题。
https://stackoverflow.com/questions/41424429
复制相似问题