Toggle navigation
首页
关于TCPGAME
快乐分享
联系我们
IIS 在WebAPI项目的 Web.config 文件中配置项目内的文件夹为站点文件夹
Lonner
时间:2023-03-18 17:06:25
阅读:938
###说明 在WebApi中,做了前后端分离,前端采用vue+UI框架的形式,也放在了WebApi下,如:在Webapi项目路径下有一个文件夹名字为:wwwroot,里面就是所有前端的东西。 当我们访问网站主页时,假设为```http://xxxx:9999/```,通常会显示为如下403禁止访问目录或者404文件未找到的提示: ![403禁止访问](//tcpgame.com\mdimg/157353ae-b7a2-4810-812a-173ee3bc2af9_NO.png "403禁止访问") 如果将wwwroot的所有内容都复制到项目文件夹内,是可以显示网站界面,但是会导致webapi项目非常混乱; 或者重新部署一个站点,单独将wwwroot映射为根目录,然后WEBAPI开发跨域操作,让站点的Vue能调用api。 但是,本文章的主要目的也说了,webapi项目,只想直接部署上去,就带着站点界面同步部署,也就是wwwroot在webapi中以一个文件夹的形式存在,并且内部调用接口都不需要配置服务IP,都是使用无ip指定的接口地址进行的相对API接口路径。 ###实现 非常简单,直接在Web.config中做如下修改就好了 ``` <system.webServer> <!--.......--> <rewrite> <rule name="Rewrite to www"> <match url="^(?!wwwroot/|api/|oauth/).*$" /> <action type="Rewrite" url="wwwroot/{R:0}" /> </rule> </rewrite> <!--.......--> </system.webServer> ``` 其中,```<match url="^(?!wwwroot/|api/|oauth/).*$" />```这一行就是确定那些请求的URL适用于重写规则,即除了以下url不会被重写,其他一律会被重写 ``` http://xxxx:9999/wwwroot/ http://xxxx:9999/api/ http://xxxx:9999/oauth/ ``` 应为我的控制器中拥有两种风格的接口定义,一种时 ```oauth/版本号/**/**```之类的,另一种是:```api/版本号/***/**```之类的控制器路由,如果自己的项目有其他格式,请自行添加到规则中。 ** action中设定的重写动作,"wwwroot/{R:0}" ,会将其他所有的请求重写到wwwroot目录下的文件。** 大功告成!!
上一章:没有了
下一章:没有了