MVC 4绑定在作为IIS7应用程序发布时中断

本文关键字:应用程序 布时 中断 IIS7 绑定 MVC | 更新日期: 2023-09-27 18:08:46

我正在尝试将MVC 4项目部署到IIS 7上。

我需要这个项目成为一个网站内的应用程序,这样用户就可以继续使用现有的网站,但通过在现有的URL中添加/mySite来访问我的网站。

当我作为网站下的应用程序创建时,我可以访问我的网站,但所有捆绑包都已损坏。

当我查看源代码时,我的捆绑包没有值,所以脚本的src看起来像:

"/mySite/Scripts/validation?v="

如果应用程序是作为一个单独的网站而不是应用程序发布的,那么它可以正常工作,捆绑包也有价值。

"/Scripts/validation?v=-_ZaBIp4vfIoajyi-JkBIsoCXRGuEGptU4ZUpHA6c8U1"

以下是我如何在bundle配置中定义我的bundle。

        var validationBundle = new ScriptBundle("~/Scripts/validation")
            .Include("~" + Links.Scripts.jquery_validate_js)
            .Include("~" + Links.Scripts.jquery_validate_unobtrusive_js);

我已经检查了父网站的应用程序池,并将其设置为.NET 4

我不知所措,在网上找不到其他东西,所以欢迎任何建议。

感谢

答案

典型的情况是,我最终找到了另一个堆栈溢出问题的答案,我再次丢失了这个问题,所以没有链接。

问题是使用T4MVC,这为作为应用程序或虚拟目录发布的MVC项目生成了不正确的路径。

如果您将发布为网站,则可以继续使用T4MVC,因为路径是正确的。

MVC 4绑定在作为IIS7应用程序发布时中断

 <system.webServer>
   <modules runAllManagedModulesForAllRequests="true"/> 
 </system.webServer>

web.config文件中的此修改对我有效。

使用VirtualPathUtility.ToAppRelative在IIS中创建应用程序相关路径,如下所示:

  var validationBundle = new ScriptBundle("~/Scripts/validation")
        .Include(VirtualPathUtility.ToAppRelative(Links.Scripts.jquery_validate_js))
        .Include(VirtualPathUtility.ToAppRelative(Links.Scripts.jquery_validate_unobtrusive_js));

请参阅此问题:无法在脚本中生成"VersionQueryString"。使用捆绑包时渲染