接上篇NetCore3.1项目升级到Net6.0项目发布异常:https://blog.csdn.net/hefeng_aspnet/article/details/127663403
发布成功后,下载运行时文件并安装:下载 .NET 6.0 (Linux、macOS 和 Windows)
这里我下载的Hosting Bundle (即箭头指向的下载链接)安装文件(如果不行选择对应的系统【x64或x86或都安装】文件下载安装),下载成功后直接安装即可。
在IIS上右键新建应用程序池:
新建网站,右键添加网站:
在浏览器上访问此端口:
结果悲剧了:
怎么调试都是无法运行,提示503和500.30的异常,个人觉得应该与NetCore3.1发布没有区别啊,过程中总结的两个方案(仅个人观点,您有更好的方案可以留言,谢谢):
方案1.修改webconfig文件:
将进程内托管修改为进程外托管,将inprocess修改为outofprocess,然后我又重启了应用程序池及网站,在访问就成功了,如图:
接口访问也都是正常的。
方案2.其实在调试的过程中,发现了一个异常:
An error occurred while starting the application.
InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.
Microsoft.AspNetCore.Server.IIS.Core.IISServerSetupFilter+<>c__DisplayClass2_0.
InvalidOperationException: Application is running inside IIS process but is not configured to use IIS server.
大概意思是:应用程序正在IIS进程内运行,但未配置为使用IIS服务器。
我想到了在Program.cs代码启动过程中我设置了UseKestrel,但没有指定IIS,于是开始在代码上尝试,代码如下:
- builder.WebHost
- .UseKestrel(so =>
- {
- //so.Limits.MaxConcurrentConnections = 100;
- //so.Limits.MaxConcurrentUpgradedConnections = 100;
- so.Limits.MaxRequestBodySize = 1024 * 1024 * 600;
- }).UseIIS();
还真有UseIIS,但是请注意:UseIIS不能放在UseKestrel前面,否则还是会报503的异常;将网站应用池停止后再发布,网站应用池启动后,访问一切正常。