.Net Core IIS发布问题和解决? 2022.10.1~2022.10.6 跨越的深坑
背景 因为项目大致完成 项目是UniAPP+ASP .Net Core WebAPI+EFCore+三层架构,我想先挂载iis,但是遇到很多坑,下面就是我的部分坑的收集 IIs当有WebDAVModel模块一定要去除不然 就是405 404 等错误 [图片][图片] 去除方法 Web.config文件添加这几句,去除IIS模块WebDAVModel[图片] [图片] 除了这个当EFcore加上ASP.Net core WebAPI+加三层架构布局IIS挂载, 去除静态资源和解决一些基本问题后 我发现 当请求《测试接口》一切正常比如这样,能够返回相应结果 [图片][图片] 但是当测试访问数据库等接口的时候还是会报500的错误,此时我就怀疑是依赖出现问题,因为通过EF访问数据库的这些接口,我在swagger上都是进行过测试,综上,我在这几天翻阅了大量资料从误以为SDK版本和 Hosting版本不统一到使用别的服务注册包等等,三四天后,我真的呵呵了,有点小崩溃。后面就是新建一个Demo逐步测试,发现应该是Sqlserver权限的问题并且发现进程模型标示有误 下面就是我的一些解决步骤, 第一步就是解决标示和CLR版本更改 [图片] [图片][图片] 改为 [图片][图片] 注解 Local System标识 这个标识是内置的这几个账户里面的级别最高的一个,那么说也就是风险最高的一个,并且也是配置起来最简单的一个了。 只需要将程序池中的标识符更改为LocalSystem,并且给文件夹权限分配一个Everyone用户权限就可以了。 原因改为无托管是因为.Net Core是不需要IIS来托管的,是属于自托管模式,所以程序池中你需要改为无托管代码,当然如果你第一次来进行挂载你还需要下载 Server Hosting 就是要在IIS添加一个AspNetCoreModule托管模块, [图片] 因为我是.Net5 所以我对应Hosting版本下载后模块名称应该长这样 [图片][图片] 改ApplicationPoolIdentify 标示是因为这个标示是最安全的但是他会给你弄一个虚拟账号,这里我的思考是我的项目不需要托管给他,但是还帮我管控。所以这是不行的要改为LocalSystem 步骤2 之后你会发现还是不行,还是会报500,如果你开启stdoutLogEnabled="true" 日志会提示你 无法打开登录所请求的数据库 "****"。登录失败。 用户 'WorkGroup\JEEPCAT$' 登录失败。 当我看到后,我就意识到了SqlSever权限问题,在经历一番网上翻阅,解决办法如下 找到你当前数据库的用户 [图片][图片] 右键添加用户 用户名为“NT AUTHORITY/SYSTEM”其他的对应 [图片][图片] 拥有框架和成员身份 选择数据库自己 [图片][图片] [图片][图片] 到这里基本上就好了测试结果 ok [图片] 总结 不积跬步无以至千里,不积小流无以成江河。这坑踩得心累