1

我正在尝试将我的 ASP.NET MVC 5.2.3.0 应用程序作为嵌套应用程序运行,以便我可以将其作为子文件夹访问,例如http://example.com/my-application。我已通过选择将应用程序添加到所选的单独应用程序池将其添加到现有应用程序中。当我在自己的 URL 上运行 my-application 时,它可以正常工作,但是当我尝试将其作为http://example.com/my-application运行时,它拒绝渲染包,既不是样式也不是 js。到目前为止我已经尝试过:

  • 我试图启用和禁用捆绑和缩小。当它被禁用时,Styles.Render 不会向标记添加任何内容。例如,当它启用时,捆绑包的无效链接被添加到标记中,<link href="/calc/bundles/styles/mainlayout?v=" rel="stylesheet"/>并且链接返回空文档。
  • 我试图将我的应用程序放到空网站上,以确保不会继承任何副作用。这里没有区别。
  • 我试图将全新的应用程序与我的应用程序并排放置,并且捆绑在那里工作得很好,所以它一定是我的应用程序有问题,我找不到确切的问题。
  • 我曾尝试 ILSpy System.Web.Optimization 代码,但在那里找不到任何帮助。
  • 由于我的 VS 刚刚挂起,我未能调试 System.Web.Optimization。
  • 我没有发现任何与我的应用程序地址冲突的路线。

如果有人遇到同样的问题,那么任何建议都会受到赞赏。谢谢。

更新:我找到了导致问题的原因。我们大量使用 T4MVC,我们也将它用于捆绑配置。所以我们的捆绑声明看起来像:

bundles.Add(new ScriptBundle("~/bundles/scripts")
       .Include("~" + Links.Scripts.Script1_js, "~" + Links.Scripts.Script2_js));

"~" + Links.Scripts.Script1_js对于嵌套应用程序,我~/my-application/scripts/script1.jsVirtualPathProvider内部Include方法期望它是~/scripts/script1.js.

所以问题转化为:有谁知道如何防止 T4MVC 将嵌套的应用程序路径添加到静态文件链接上,从而使应用程序不知道被嵌套了?我敢打赌@David Ebbo 知道如何做到这一点:)

4

0 回答 0