【无标题】.Net IIS发布问题和解决 2022.10.1~2022.10.6 跨越的深坑

背景

我做的项目是Uniapp+ASP.Net WebAPI +EF Core+三层架构,在完成大部分工作后,想进行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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值