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

标签 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>

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

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

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

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

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

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

最佳答案

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

关于如果项目在子目录中运行,C# MVC StyleBundle 和 ScriptBundle 不会呈现正确的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41424429/

相关文章:

c# - 为什么某些 Azure App Insight 指标没有出现在门户中?

c# - 最佳方法建议 : C# based Windows service implementation

asp.net-mvc - 想要将 asp.net MVC 中的所有请求从给定域重定向到特定 View 页面

asp.net-mvc - 使用 Entity Framework 7 和 SQL Server 2008 进行分页

teamcity - 如何使用 TeamCity AssemblyInfo Patcher 构建功能,但排除 SVN Externals 也被修补?

batch-file - 从 TeamCity 运行 .bat 文件

c# - 是否可以限制 Parallel.ForEach 的内核数?

c# - 来自 P/Invoke 函数的奇怪行为 - 魔术循环

jquery - 如何验证一个日期时间比另一个日期时间客户端更新并在失败时发布警告

c++ - TeamCity C++ Gradle构建删除工件依赖项