MVC web应用如何在IIS Express中使用虚拟目录

 在asp.net web项目开发中,有时候会涉及到虚拟目录的问题,使用虚拟目录功能映射一个非项目内的文件夹实现文件共享,这个功能在IIS中很好实现,鼠标右键“添加虚拟目录”然后添加虚拟文件夹的目录名称和实际物理路径之后即可完成。

   废话少说,直接上解决方案

   假设需求:访问example.comuserfilesavater.jpg

   项目里不存在userfiles这个文件夹,需要使用D:webfilesavater.jpg这个文件

   1. 首先需要解决MVC的路由问题,让指定的某个网站目录不要走路由,在RouteConfig.cs中加入如下路径忽略代码

routes.IgnoreRoute("userfiles/{*pathinfo}");

       注意不要写成"/userfiles/{*pathinfo}",会报错提示不能使用/开头。

    经过以上的步骤,MVC应用程序在接受到访问/userfiles/*的请求时就会绕过路由直接访问userfiles目录,而不是去找userfiles这个controller了。

    2. 设置目录映射,如果是在IIS中运行的,按文件开头提示的方法添加虚拟目录即可。

    但是如果是在IIS Express中,则需要手动编辑IIS Express的applicationhost.config文件,具体文件路径根据你所使用的操作系统而定,win10的路径在C:UsersUserDocumentsIISExpressconfig,将User替换成当前用户,此处涉及windows的使用不多讲。

        

    使用文本编辑器(notepad++,UEditor,记事本都行),打开applicationhost.config文件,在<sites></sites>节点中找到你的MVC web应用的节点,在<application></application>内添加以下文 

    将path的值设置为网站目录,physicalPath的值设置为所需要的映射的实际物理路径即可。

    

<virtualDirectory path="/userfiles" physicalPath="D:webfiles" />

至此,Done。

文字转载于:https://www.tnblog.net/mingmir/article/details/3706

原文地址:https://www.cnblogs.com/riddly/p/13747926.html