记录Blazor server部署到iis时遇到的问题,边部署边记录边处理问题,好在最终是能正常访问了。
发布站点
在vs2022中,点击菜单“生成”->“发布”,在发布时选择好发布文件夹和目标运行时,比如部署在X64系统上时,就不要选择X86,这关系到后面下载哪个运行时。
部署到IIS
打开IIS管理器,选中网站,点击“添加网站”,输入网站名称,应用程序池就自动和网站名称相同了,设置好路径和IP地址,就可以了。如果你运气很好,就能直接访问了,但是第一次还想一次部署成功的可能性较小[呲牙]
HTTP Error 500.30 – ASP.NET Core app failed to start
出现这个错误,最先需要的是安装一下运行时吧,官方地址https://dotnet.microsoft.com/zh-cn/download,选择所有.net8.0版本
然后选择对应的asp.net core运行时就可以了,上面第一步选择是的X64,就选择X64版本就可以了。
还有可能是站点文件夹没有IIS_user权限导致的,需要给它设置上IIS_user完全控制权。
HTTP Error 500.31 – ANCM Failed to Find Native Dependencies
上面搞完后又出现下面的错误了,继续解决。
还是运行时的问题,有可能依赖项丢失或损坏,或者就没有安装依赖项,还是重新装一次吧,这里选.net 8.0,下载地址https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0;
安装完成后以为好了,结果又出现500.30错误了[捂脸],那就重新再安装一下运行时吧,发现安装完重启后还是不行。
开启错误日志
网上搜了下,其他导致IIS 500.30的错误有一百多种,具体哪一种得看自己遇到的具体是哪一种,只能看日志了,打开发布文件夹中的web.config文件,把stdoutLogEnabled设置为true就能显示日志文件了。
看了日志文件后里面的主要内容就是说启用压缩中间件错误(ResponseCompression),打开program.cs文件,在build下面增加builder.Services.AddResponseCompression(),重新发布后发现竟然好了。
那么为啥它在VS2022中直接运行时不会出错了,往下看发现它区分了是不是开发模式,开发模式下不压缩,所以也就不会报错了。
var app = builder.Build();
//判断是不是开发模式
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
app.UseResponseCompression();
}
美好的运行界面
换一个有IP地址的
在IIS中可以给站点多绑定几个,如https,虽然会提醒证书有问题,但还是可以用的
#职场##挑战30天在头条写日记##冬日生活打卡季#