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

Asp.net 在Visual Studio Web应用程序项目中使用IIS虚拟目录,asp.net,visual-studio,iis,virtual-directory,staging,Asp.net,Visual Studio,Iis,Virtual Directory,Staging,我有一个ASP.NET项目,它有以下目录 \广告 \照片 这两个文件夹中都有数千个文件,这些文件经常更新。我目前已将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 我正在考虑把它变成

我有一个ASP.NET项目,它有以下目录

\广告
\照片

这两个文件夹中都有数千个文件,这些文件经常更新。我目前已将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子目录的虚拟目录。这样,当我在登台测试时,我不必每次部署时都复制广告和照片中的所有文件,也不必担心事情不同步。这是个坏主意吗?我正在Visual Studio 2008中开发-有没有办法让VS将我的web应用程序项目子目录视为虚拟目录?

我认为实现这一点的方法是先用VDIR在IIS中设置它,然后在Visual Studio中从IIS打开网站。请参阅。

IIS中的web应用程序中包含的虚拟目录看起来就像Visual Studio中的包

通过打开根应用程序并单击包,它会询问您是否要将子应用程序/vdir添加到解决方案中。然后将其作为第二个项目打开,然后可以根据需要引用或使用它

测试和实时部署背后的想法是,如果测试破坏了某些内容,您应该拥有单独的数据。本质上,通过使用实时数据进行测试,您必须确保不会删除/更改不应该删除/更改的内容,否则会破坏数据的实时副本

话虽如此,如果您计划构建的只是读取数据的东西,这是一个好主意,因为它将在部署时为您节省大量磁盘空间和时间

首先在IIS中以您想要的方式查看它,然后在VS中打开它

Visual Studio将服务器上定义的所有虚拟应用程序视为子应用程序。 如果资源未作为IIS中的应用程序设置在子目录中,则应显示为普通文件夹

例如

如果您在IIS上设置了两个网站,并将物理文件夹作为虚拟目录映射到这两个网站上的图像,则在Visual Studio中打开其中一个网站时,您应该可以作为普通文件夹访问它们

但是,如果您将虚拟目录放入IIS中的应用程序中,然后在VS中打开网站,那么它应该只显示一个包。点击它,将其添加为VS中的第二个项目

我不是最擅长解释事情的人,但希望这是有道理的


希望它能有所帮助:)

我发现我的应用程序也存在类似的问题,即在部署时需要复制大量资源。
我正在考虑构建一个文件处理程序,为浏览器提供图像资源。也就是说,当链接到像
/filehandler.ashx?image=/ads/101/o3904838402384.jpg这样的图像时,您可以有一个配置设置,该设置指向测试和实时环境中不同或相同的文件存储文件夹

下面是它如何工作的基本原理的链接


您可以在Visual Studio中使用链接文件夹=这会创建指向另一个项目(或光盘上其他地方)中文件夹的虚拟链接,但不会将其物理复制到磁盘上。

另一个选项…如果您使用SVN,并且您很高兴在磁盘上物理复制两次图像,但仍保持同步,因为这些都是资源,所以要使用SVN外部程序,有什么特别的原因需要它们在Visual Studio中吗?VS,IMO,用于管理解决方案中的代码,不一定是目录结构


在IIS中,您可以像设置目录结构一样设置目录结构(甚至让虚拟目录指向网络驱动器),Visual Studio可以完全忽略它,因为它可能只是一堆静态文件。

我也想知道这一点。允许虚拟目录位于项目中将允许我更准确地复制我们的生产环境网站结构。谢谢,我也看到了这一点。这适用于网站,但不适用于Web应用程序Paul,您应该编辑原始答案,而不是添加新答案。Jordan,在使用“设计视图”时能够看到图像很好,Visual Studio可以验证您的URL是否有效,但前提是图像确实存在于磁盘上。对于小问题,是的,我没有尝试过任何特别复杂的东西,但这就是它的用途(afaik)