部署微信公众号 ASP.NET Core 程序到 IIS 遇到的问题
我们搭建微信公众号程序的时候出现了:
HTTP 错误 500.19 – Internal Server Error
无法访问请求的页面,因为该页的相关配置数据无效。
详细错误信息
模块:IIS Web Core
配置文件:\?\C:\Users\M\Desktop\WeixinCore\web.config
请求的 URL:http://2l1941590s.imwork.net:80/
发现需要给 IIS 安装 AspNetCoreModule 模块。
安装 AspNetCoreModule / .NET Core 托管模块
下载地址:
https://www.microsoft.com/net/download
选择 Run apps – Runtime 2.1.3:
https://www.microsoft.com/net/download/dotnet-core/2.1
Hosting Bundle 下载:
注意你的 .NET Core 版本。
安装完成后重启 IIS 服务器。
配置微信服务器地址
然后我们配置刚才这个地址:

http://xxxxx.imwork.net/home/Common
只有前面那些接口的加密逻辑都正确,才可以验证成功。
在 IIS 上部署 ASP.NET Core 项目
与 ASP.NET 时代不同,ASP.NET Core 不再是由 IIS 工作进程(w3wp.exe)托管,而是使用自托管 Web服务器(Kestrel)运行,IIS 作为反向代理,把请求转发到 Kestrel 监听的端口,再进入中间件管道处理业务,最后把响应写回 IIS,再返回给客户端。
其中最重要的角色是 AspNetCoreModule。请求进入 IIS 后,由它转发到 ASP.NET Core 程序。所以应用程序池不需要托管代码,只负责转发请求。
部署前要确保 IIS 已安装 AspNetCoreModule 托管模块。没装的话下载安装:
https://go.microsoft.com/fwlink/?linkid=844461
安装完后一定要重启,否则可能出现 Http Error 502.5。
应用程序池设置
设置应用程序池的 .NET CLR 版本为“无托管代码”,因为 IIS 只是反向代理,不需要它托管代码。
发布与添加网站
发布:
项目右键 → 发布
添加网站:
添加一个网站,设置名称,把路径指向发布后的文件夹。
设置应用程序池的 .NET CLR 版本为“无托管代码”。

IIS 安装 AspNetCoreModule 模块:
https://www.microsoft.com/net/download/windows