如何使用IIS7虚拟目录跨项目使用公共文件

时间:2014-03-26 15:25:17

标签: asp.net-mvc-4 virtual-directory

情景:

我对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(虽然我是网络形式),How to add reference to System.Web.Optimization for MVC-3-converted-to-4 appScriptBundle not rendering scripts that are in a VirtualDirectory)但我担心我对MVC缺乏了解,这限制了我前进的道路,并且真的希望能够深入了解如何MVC处理IIS虚拟目录,如果上面的帖子我已经阅读过,那么它甚至是一个简单的可能性。

这可以在MVC-4中完成,如果不是,那么在重用项目中的公共代码时,第二个最佳选择是什么?

1 个答案:

答案 0 :(得分:1)

在阅读kev(Using ServerManager to create Application within Application)的帖子后,它让我走上了正确的道路,而我遇到的问题实际上令人尴尬。

为了其他开发者在视觉工作室中遇到类似问题登陆这篇文章,这就解决了我的问题:

<强>问题:

我使用了一个单独的项目,其中包含用于多个其他项目的文件。我在IIS7中创建了一个引用这些文件的虚拟文件夹。这意味着如果需要对公共文件进行更改,则会更新一次,所有其他项目将自动“#34;改变。

我的其他个别项目使用脚本捆绑来包含仅与所述项目相关的文件,但也引用IIS中定义的虚拟文件夹中的公共文件。

我的MVC-4 Web应用程序在调试或发布时都没有根据上面的语法获取公共文件。

<强>解决方案:

在VS2012中进行开发时,在项目属性下,Web选项卡下有一个设置,您可以在其中指定是否要使用本地IIS Web服务器或IIS Express来测试应用程序。 IIS Express会向站点添加一个随机端口以进行测试,并允许多个站点实例运行(在不同的端口上)。这似乎在捆绑中抛出了虚拟目录include。

Using IIS Express

选择使用本地IIS服务器更接近&#34; live&#34;环境在我看来。只需取消勾选&#34;使用IIS Express&#34;设置。

enter image description here

作为附注,有关IIS和IIS express的使用之间的区别以及它是否适合您的环境(就像我的那样)的更多信息,请参阅以下链接:

http://msdn.microsoft.com/en-us/library/58wxa9w5.aspx

希望这可以帮助将来的某个人并节省他浪费在这上面的时间!