.net core service && angular项目 iis发布

项目结构

.net core 后端服务站点
angular 前端页面站点

项目模板来自于abp或者52abphtml

.net core 后端服务站点发布到IIS

发布报错

.Net Core使用IIS部署出现502Error 502.5 - Process Failure

在项目目录运行命令行,执行前端

dotnet XXXWeb.dll   --XXXWeb.dll是启动项

若是.net core版本不对,则会提示须要安装某版本的.net core
12
完成安装便可
参考资料web

appsettings.json

在appsettings.json中设置客户端地址ClientRootAddressjson

"App": {
  "ServerRootAddress": "http://localhost:3521/",
  "ClientRootAddress": "http://localhost:4201/",
  "CorsOrigins": "*"
}

注意

发布前记住关闭swagger ui等开发工具
关闭swagger ui,能够选择删去.xml文件,则swagger页面会报错
1windows

angular前端页面站点

在angular项目文件中执行后端

ng build --prod --aot

解决相关报错,生成dist文件夹,包括浏览器

bundle
XXX  --XXX是你的项目名

在IIS中,新建站点,将XXX文件夹做为根目录
在XXX文件夹中新建文件web.configapp

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AngularJS" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

在/XXX/assets/appconfig.prod.json中设置service地址remoteServiceBaseUrlide

{
  "remoteServiceBaseUrl": "http://localhost:3521"
}

由于Angular无刷新的特性,因此浏览器地址栏上的网址其实不会映射到磁盘的特定位置,因此咱们须要安装Microsoft URL Rewrite Module 2.0 for IIS (x64)
注意Angular项目所在目录的访问权限,能够设置为EveryOne工具

参考资料

Angular6 从打包到部署IIS上
server-configuration
Angular部署到windows上