场景:
我对ASP.Net MVC编程非常陌生,并且经常尝试在多个项目中使用公共文件(.js、.css)。这样做的目的是将这些通用文件放在一个位置,这样可以方便地进行将来的更新,并避免了所有项目的“复制和粘贴”困境。我已经在IIS7中将这个文件夹设置为默认网站中的一个虚拟目录,别名为"CommonFiles“。
问题:
使用MVC-4,我尝试将js文件添加到脚本包中,但在运行应用程序时,它根本就没有收集文件。(在页面源代码中签入并添加了js函数作为测试)
BundleConfig.cs中的代码片段:
bundles.Add(new ScriptBundle("~/bundles/test").Include("~/CommonFiles/test.js"));在_Layout.cshtml中进行渲染:
@Scripts.Render("~/bundles/test")我读过不少帖子( Script Bundling in WebForms with Virtual Directories (虽然是asp webforms )、How to add reference to System.Web.Optimization for MVC-3-converted-to-4 app、ScriptBundle not rendering scripts that are in a VirtualDirectory),但恐怕我对MVC的缺乏限制了我前进的道路,我真的希望了解MVC是如何处理IIS虚拟目录的,如果考虑到我最近读到的文章,这甚至是一种简单的可能性。
这能在MVC-4中完成吗?如果不是,在跨项目重用公共代码方面,第二个最好的选择是什么?
发布于 2014-03-27 12:31:28
在阅读了kev (Using ServerManager to create Application within Application)的一篇文章后,它让我走上了正确的道路,而我遇到的问题实际上令我感到尴尬。
为了让其他开发人员在这篇文章上出现类似的问题,我的问题是这样解决的:
问题:
我使用一个单独的项目,其中包含跨多个其他项目使用的文件。我在IIS7中创建了一个引用这些文件的虚拟文件夹。这意味着,如果需要对公共文件进行更改,则只更新一次,所有其他项目都会自动“查看”更改。
我的其他单独项目使用脚本绑定来包含仅与上述项目相关的文件,还可以引用IIS中定义的虚拟文件夹中的公共文件。
考虑到上面的语法,我的MVC-4 web应用程序在调试或发布时都没有选择普通的文件。
解决方案:
在VS2012中开发时,在项目的属性下,web选项卡下有一个设置,您可以指定是使用本地IIS服务器还是IIS来测试应用程序。IIS Express向站点添加一个随机端口以进行测试,并允许多个站点实例运行(在不同端口上)。这似乎会将虚拟目录包含抛出到捆绑中。

在我看来,选择使用本地IIS服务器更接近于“活动”环境。只需取消“使用IIS Express”设置。

关于IIS和IIS express的用法之间的区别以及它是否适合您的环境(与我的环境一样)的更多信息,请参见以下链接:
http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx
希望这对未来的人有所帮助,并为他们节省我在这方面浪费的时间!
https://stackoverflow.com/questions/22665676
复制相似问题