【问题标题】:How to make use of common files across projects using an IIS7 virtual directory如何使用 IIS7 虚拟目录跨项目使用公共文件
【发布时间】:2014-03-26 15:25:17
【问题描述】:

场景:

我对 ASP.Net MVC 编程非常陌生,并且不断尝试跨多个项目使用公共文件(.js、.css)。 我们的想法是将这些通用文件放在 1 个位置,以便将来轻松更新并避免所有项目中的“复制和粘贴”困境。我在 IIS7 中将此文件夹设置为默认网站中的虚拟目录,别名为“CommonFiles”。

问题:

使用 MVC-4,我尝试将 js 文件添加到脚本包中,但在运行应用程序时,它根本没有提取文件。 (查看了页面源码,还添加了一个js函数作为测试)

BundleConfig.cs中的代码sn-p:

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 appScriptBundle not rendering scripts that are in a VirtualDirectory)但我担心我对MVC的缺乏了解限制了我前进的道路,我真的希望能深入了解MVC如何处理IIS虚拟目录,如果它是鉴于我在上面阅读的最后一篇文章,这甚至是一个简单的可能性。

这可以在 MVC-4 中完成吗?如果不能,那么在跨项目重用公共代码方面,第二好的选择是什么?

【问题讨论】:

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


    【解决方案1】:

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

    为了让其他开发人员在 Visual Studio 中遇到类似问题的帖子,这就是解决我的问题的原因:

    问题:

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

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

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

    解决方案:

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

    在我看来,选择使用本地 IIS 服务器更接近“实时”环境。只需取消勾选“使用 IIS Express”设置即可。

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

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

    希望这对将来的某人有所帮助,并为他们节省我在这方面浪费的时间!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2020-10-10
      • 2012-10-19
      • 2013-12-29
      • 1970-01-01
      相关资源
      最近更新 更多