Document

IIS部署Vue2/3+NetCoreApi

 IIS发布部署Vue2/3+NetCoreApi

准备工作

本人自己腾讯文档资料:

https://docs.qq.com/doc/DRUdZbVVSSUJ4ZHV0

 

1、部署IIS服务器

2、项目执行build生成需要部署的文件

步骤一:复制文件

把build之后的文件(dist文件夹)拷贝到IIS存放网站文件的目录

注意:

拷贝的时候不一定是要把dist整个文件夹拷贝,也可以拷贝里面的内容,这个需要看自己的需求。如果不明白的话,可以跟我一样做。

步骤二:在IIS中新建站点

在"网站"执行鼠标右键,选择添加网站。

网站名称:按照用途或者项目起名即可

应用程序池:部署前端项目,这个可以忽略,任意选择即可

内容目录:网站存放的路径,最好以英文命名

端口:web一般是80端口,不过我的80已经被其他项目占用,所以我设置为8082

步骤三:访问网站

访问网站可以在IIS界面右侧直接浏览,具体见上图,或者直接在浏览器地址栏输入:http://localhost:8082/

很多网友的文章到此应该就结束了,他们大多都显示成功截图。 but,我这边却是一个接一个坑。

下面我就给大家分享一下我的填坑之旅 ?

步骤四:填坑

坑一、报错:URL拼写错误

打开网址发现页面报错,如下图:

报错内容:

见上图显示,提示URL拼写错误。

我在路由中设置访问"/"会重定向到"/brand/company",所以上图中访问地址是正确的。

在IIS中开启代理和设置URL重写可以解决上诉问题。 具体如下

 

步骤一:URL重写

1、下载所需模块:urlrewrite

下载地址:https://www.iis.net/downloads/microsoft/url-rewrite

2、设置规则

安装好模块之后,在IIS是图界面会看到"URL 重写"

双击之后,进入URL重写界面,在右上角点击"添加规则",具体如下图:

选择"空白规则",进入规则设置界面,具体见下图:

注意:

名称:名称按功能命名即可

匹配URL:选择使用正则表达式,然后模式根据请求的api来填写,比如我请求的api地址全都是为'/api/---',那我这里填写^((?!(api)).)*$即可

手动展开"条件"选项,添加一个"条件",选择"不是文件",具体见上图

手动展开"操作"选项,设置"重写URL"为"/index.html",然后点击右上角应用,重写URL的规则就设置好了。

 

步骤二:代理设置

1、下载所需模块

这里需要配置urlrewrite 和 Application Request Routing两个模块。urlrewrite 在步骤一种已经安装过了,我们需要下载application request routing,传送门:https://www.iis.net/downloads/microsoft/application-request-routing

2、开启代理

按照好application request routing模块之后再IIS功能视图界面可以看到相关设置,具体见下图:

击进入设置界面,在右上角找到设置项目,点击进入,具体见下图:

Enable proxy 设置为"开启",在右侧点击"应用"即可,具体见下图:

3、设置urlrewrite规则

名称:根据功能命名即可

匹配URL:使用"通配符";前端请求的地址是'/prod-api/----',所以模式设置"*prod-api/*"

条件:不需要配置

操作:重写URL,比如我请求的实际地址是' http://106.14.78.107:8081/write',那我这里就填写' http://106.14.78.107:8081/{R:2}',具体跟实际情况填写另外,规则数目需要根据自己请求的api地址类型数目来设置

 

坑二:文字乱码

经过上述配置之后,再次打开网址,已经可以正常访问了,具体见下图:

but,一坑刚平一坑又现,没有办法,开发的路上总是崎岖坎坷,兄弟你要有一颗强大的心

解决方案:

在文件夹中,选择index.html执行鼠标右键,选择打开方式为"记事本"

之后进入记事本,不需要任何编辑,执行:文件> 另存为,编码选择"UTF-8"保存即可

回到浏览器刷新页面,文本已经正常显示了

 

坑三:页面数据不显示

从坑二的最后一张图可以看到,页面显示空白,这是因为数据没有请求到,具体是为啥呢?

这是前面项目中请求方式埋下的坑。

在代码中改回真实的请求路劲即可

经过上述配置,vue项目真正成功的部署到IIS中了。

原文链接:https://blog.csdn.net/bigbear00007/article/details/90718450

以上内容为他人总结的方案,转载过来提供参考,下面附上我的解决方式(服务器为Windows 2016):

IIS安装URL重写,在发布文件的根路径(dist)目录下添加Web.config,省去上面所说的 设置urlrewrite规则

参照:https://router.vuejs.org/zh/guide/essentials/history-mode.html#internet-information-services-iis

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="prod-api" stopProcessing="true">
<match url="^(.*?)prod-api/(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="https://websiteapi.sxqchuang.com/{R:2}" />
</rule>
<rule name="msghub" enabled="true" stopProcessing="true">
<match url="^(.*?)msghub(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="https://websiteapi.sxqchuang.com/msghub{R:2}" />
</rule>
<rule name="Handle History Mode and custom 404/500" enabled="true" stopProcessing="true">
<match url="^((?!(prod-api|msghub)).)*$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
<security>
<requestFiltering>
<verbs>
<add verb="POST" allowed="true" />
</verbs>
</requestFiltering>
</security>
<directoryBrowse enabled="true" />
</system.webServer>
</configuration>

api 不需要开启 代理,省去了上面的开启代理。

 

posted @ 2024-06-04 15:56  从未被超越  阅读(39)  评论(0)    收藏  举报