我正在尝试将一个MVC 4项目部署到IIS 7上。
我需要将项目作为网站内的应用程序,以便用户可以继续使用现有网站,但可以通过将/ mySite添加到现有网址来访问我的网站。
我可以在网站下创建一个应用程序时访问我的网站,但所有捆绑包都已损坏。
当我查看源代码时,我的bundle没有值,所以脚本的src如下所示:
"/mySite/Scripts/validation?v="
如果应用程序是作为单独的网站而不是应用程序发布的,那么它可以正常运行并且捆绑包具有值。
"/Scripts/validation?v=-_ZaBIp4vfIoajyi-JkBIsoCXRGuEGptU4ZUpHA6c8U1"
以下是我在bundle config中定义捆绑包的方法。
var validationBundle = new ScriptBundle("~/Scripts/validation")
.Include("~" + Links.Scripts.jquery_validate_js)
.Include("~" + Links.Scripts.jquery_validate_unobtrusive_js);
我检查了父网站的应用程序池,并将其设置为.NET 4
我很茫然,无法在网上找到任何其他内容,所以欢迎任何建议。
由于
ANSWER
典型的,我最终在另一个堆栈溢出问题上找到答案,我再次丢失了这个问题,所以没有链接。
问题在于使用T4MVC,这会为作为应用程序或虚拟目录发布的MVC项目生成错误的路径。
如果您要作为网站发布,可以继续使用T4MVC,因为路径是正确的。
答案 0 :(得分:2)
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
web.config文件中的这个修改对我有用。
答案 1 :(得分:0)
使用 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));
看到这个问题: Unable to generate 'VersionQueryString' in Scripts.Render when using bundle