在IIS express中创建虚拟目录

Joh*_*oge 122 visual-studio iis-express

有没有办法在IIS express中创建虚拟目录?我知道Cassini不能这样做,如果不使用完整版本的IIS就能做到这一点会很好.

到目前为止我已经知道了我可以在IIS Express中本地浏览我的应用程序,如下所示:

HTTP://本地主机:1132 /

我想要做的是创建一个名为"OffSiteStuff"的虚拟目录,并将其指向我的C驱动器上的某个位置,如"c:\ offsitestuff",然后浏览到该文件夹​​中的项目,如下所示:

HTTP://本地主机:1132/OffSiteStuff/UserUploadedImage.jpg

我知道我可以使用我的网站中的文件夹进行此操作并仍然使用IIS Express,或者就像普通的旧卡西尼而言,但是此文件夹将存储用户上传的图像,我真的不希望这些图像混淆应用文件.

另一个"走向大"的解决方案是每次我想调试使用异地内容的功能时,将站点部署到一个完整的Server 2008 IIS 7.5实例上,但这也有点麻烦.

有什么方法可以在<System.WebServer />Web配置元素中执行此操作吗?

Be.*_*St. 127

IIS express配置由applicationhost.config管理.
你可以找到它

用户\ <用户名>\Documents\IISExpress\config文件夹.

在里面,您可以找到包含每个IIS Express配置站点的部分的站点部分.

添加(或修改)这样的网站部分:

<site name="WebSiteWithVirtualDirectory" id="20">
   <application path="/" applicationPool="Clr4IntegratedAppPool">
     <virtualDirectory path="/" physicalPath="c:\temp\website1" />
   </application>
   <application path="/OffSiteStuff" applicationPool="Clr4IntegratedAppPool">
     <virtualDirectory path="/" physicalPath="d:\temp\SubFolderApp" />
   </application>
    <bindings>
      <binding protocol="http" bindingInformation="*:1132:localhost" />
   </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

实际上,您需要在站点中为每个虚拟目录添加新的应用程序标记.您可以获得很大的灵活性,因为您可以为虚拟目录设置不同的配置(例如,不同的.Net Framework版本)

编辑 感谢FevziApaydın指出一个更优雅的解决方案.

您可以通过向Application标记添加一个或多个virtualDirectory标记来实现相同的结果:

<site name="WebSiteWithVirtualDirectory" id="20">
   <application path="/" applicationPool="Clr4IntegratedAppPool">
     <virtualDirectory path="/" physicalPath="c:\temp\website1" />
     <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" />
   </application>
    <bindings>
      <binding protocol="http" bindingInformation="*:1132:localhost" />
   </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

参考:

  • 注意:虽然这些说明仍适用于Visual Studio 2015,但"applicationhost.config"的位置已更改.它比以前的版本更明智,它现在位于解决方案文件夹的`.vs\config`子文件夹中. (25认同)

小智 91

@ Be.St.的批评是正确的,但不完整.我只是通过纠正不正确的部分来复制他的解释.

IIS express配置由applicationhost.config管理.
你可以找到它

用户\ <用户名>\Documents\IISExpress\config文件夹.

在里面,您可以找到包含每个IIS Express配置站点的部分的站点部分.

添加(或修改)这样的网站部分:

<site name="WebSiteWithVirtualDirectory" id="20">
   <application path="/" applicationPool="Clr4IntegratedAppPool">
     <virtualDirectory path="/" physicalPath="c:\temp\website1" />
     <virtualDirectory path="/OffSiteStuff" physicalPath="d:\temp\SubFolderApp" />
   </application>
   <bindings>
      <binding protocol="http" bindingInformation="*:1132:localhost" />
   </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

您应该只将新的virtualDirectory元素添加到应用程序父元素,而不是添加新的应用程序块.

编辑 - Visual Studio 2015

如果您正在寻找applicationHost.config文件并且您正在使用VS2015,那么您将在以下位置找到它:

[solution_directory] ​​/.VS /配置/的applicationHost.config

  • 无论如何在Visual Studio项目中应用它?在多开发人员环境中,如果其他人检查了他们计算机上的代码,那么他们的本地IIS Express将不会配置虚拟目录并导致运行时错误不是吗? (4认同)
  • 在Visual Studio 2015中,IIS配置文件存储在解决方案目录中,名为.vs/config的文件夹中,因此您可以根据需要将其检入源代码管理中. (4认同)

小智 6

在VS2013中,我通过以下步骤完成了此操作:

1.右键单击Web应用程序项目,然后单击"属性"

2.查看"属性"页面的"Web"选项卡

3.在服务器下,"IIS Express"是下拉列表的默认选项,在"Project Url"中使用端口号将URL更改为适合您的URL.例如,我删除了端口号,并在localhost之后添加了"/ MVCDemo4".

4.单击"创建虚拟目录"按钮.

5.运行您的项目,将使用新的URL