在Visual Studio Web应用程序项目中使用IIS虚拟目录

10
我有一个ASP.NET项目,其中包含以下目录:

\ads
\photos

这两个文件夹中都有数千个文件,而且它们经常被更新。我目前的IIS设置如下:

\inetpub\wwwroot\foo
\inetpub\wwwroot\foo\ads
\inetpub\wwwroot\foo\photos
\inetpub\wwwroot\foo.staging
\inetpub\wwwroot\foo.staging\ads
\inetpub\wwwroot\foo.staging\photos

我正在考虑将其变成:

\inetpub\wwwroot\foo
\inetpub\wwwroot\foo\ads
\inetpub\wwwroot\foo\photos
\inetpub\wwwroot\foo.staging
\inetpub\wwwroot\foo.staging\ads
\inetpub\wwwroot\foo.staging\photos
\inetpub\wwwroot\foo.resources\ads
\inetpub\wwwroot\foo.resources\photos

并将foo和foo.staging中的子目录转换为指向foo.resources子目录的虚拟目录。这样,在测试过程中,我就不必每次部署时复制ads和photos中的所有文件,并担心事情不同步。这是一个坏主意吗?我正在使用Visual Studio 2008开发-是否有办法让VS将我的Web应用程序项目子目录视为虚拟目录?


我也很想知道这个。允许虚拟目录位于项目内部将使我能够更准确地复制我们生产环境的网站结构。 - Russell
6个回答

2
在IIS中,Web应用程序中的虚拟目录看起来就像是Visual Studio中的一个包。打开根应用程序并单击该包,它会询问您是否要将子应用程序/虚拟目录添加到解决方案中。然后将其作为第二个项目打开,您可以随时引用或使用它。
测试和生产部署的背后理念是,您应该有单独的数据以防测试出现问题。如果您在测试中使用实时数据,您必须确保您不会删除/更改不应该更改的内容,否则您将破坏实时数据的副本。
话虽如此,如果您打算构建的只是读取数据的东西,这是一个很好的主意,因为它将节省大量的磁盘空间和部署时间。
首先在IIS中将其设置为所需状态,然后在VS中打开。
Visual Studio将服务器上定义的所有虚拟应用程序视为子应用程序。如果在IIS中未将资源设置为子目录中的应用程序,则应显示为普通文件夹。
例如...
如果您在IIS上设置了2个网站,并将物理文件夹映射到两个虚拟目录中的图像,则在Visual Studio中打开任何一个都应该能够访问它们作为普通文件夹。
但是,如果您将虚拟目录设置为IIS中的应用程序,然后在VS中打开网站,它应该只显示为一个包。单击它会将其作为第二个项目添加到VS中。
我不是最好的解释者,但希望这有意义。
希望能有所帮助 :)

0

我认为处理这个问题的方法是首先在IIS中设置您想要的vdirs,然后在Visual Studio中从IIS打开网站。请参见我的答案这个问题


谢谢,我也看到了。那可以用于网站,但不适用于 Web 应用程序。 - kenwarner

0

我在应用程序部署时遇到了类似的问题,需要复制大量资源。

我正在考虑构建一个文件处理器,向浏览器提供图像资源。例如,链接到图像时,您可以像这样使用:/filehandler.ashx?image=/ads/101/o3904838402384.jpg,然后您只需设置一个配置,指向测试和实际环境的不同或相同的文件存储文件夹。

以下是它的基本工作原理的链接。

http://dotnetperls.com/ashx-handler


0

你可以在Visual Studio中使用链接文件夹,这将创建一个虚拟链接到另一个项目(或磁盘上的其他位置)的文件夹,但不会在磁盘上物理复制它们。


对于小事情来说,是的,我还没有尝试过特别复杂的东西,但这就是它的设计初衷(据我所知)。 - Paul

0

另一种选择... 如果你正在使用 SVN,并且如果你愿意在磁盘上物理复制两次图像,但仍然保持同步,那么可以使用 SVN Externals。


Paul,你应该编辑你的原始答案而不是添加一个新的。 - John Saunders

0

既然这些是资源,你需要它们在Visual Studio中的特定原因吗?在我看来,VS用于管理解决方案中的代码,而不一定是目录结构。

在IIS中,您可以将目录结构设置为与您现有的完全相同(甚至可以将虚拟目录指向网络驱动器),而Visual Studio可以完全忽略它,因为它很可能只是一堆静态文件。


Jordan,使用设计视图时能够看到图像很不错,而且Visual Studio可以验证您的URL是否有效,但前提是这些图像实际上存在于磁盘上。 - John Saunders

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接