常规情况下,vue 和api是分开的两个站点进行部署,若是要对外只有一个端口的话,采用以下梁总方式即可。
1.需要配置路由转发和代理开启(vue 使用hisoty模式)
参考链接.netCore + vue(history模式) 项目整合 在IIS上的部署(无需代理)
主要路由配置(web.config)
<rewrite>
<rules>
<rule name="api" patternSyntax="Wildcard" stopProcessing="true">
<match url="*api/*" />
<action type="Rewrite" url="/api/{R:2}" />
</rule>
<rule name="Handle History Mode and custom 404/500" stopProcessing="true">
<match url="^(?![api]).*$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
2. vue 和 api 不在同一个站点,所有请求走vue所在站点,需要安装代理插件,大体流程如下:
(1)安装插件(ARRv3_0.exe 代理服务)
(2)安装后需要重新关闭iis再次打开,就看得到代理了,把代理开启
(3)web.config 配置就如下:
<rewrite>
<rules>
<rule name="api" patternSyntax="Wildcard" stopProcessing="true">
<match url="*api/*" />
<!--http://localhost:xxx 替换成自己的api所在站点地址 -->
<action type="Rewrite" url="http://localhost:xxx/api/{R:2}" />
</rule>
<rule name="Handle History Mode and custom 404/500" stopProcessing="true">
<match url="^(?![api]).*$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
注意:若是发现刷新直接404 的用下方的配置
<rewrite>
<rules>
<rule name="api" patternSyntax="Wildcard" stopProcessing="true">
<match url="*api/*" />
<!--http://localhost:xxx 替换成自己的api所在站点地址 -->
<action type="Rewrite" url="http://localhost:xxx/api/{R:2}" />
</rule>
<rule name="Handle History Mode and custom 404/500" stopProcessing="true">
<match url="^(?![api]).*$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" pattern=".*\.[\d\w]+$" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
<!--刷新报404问题终极解决-->
<rule name="*" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
参考资料:
.netCore + vue(history模式) 项目整合 在IIS上的部署(无需代理)
IIS10.0部署netcor+vue前后端两个HTTPS域名方法IIS配置API接口转发