评论

ASP.Net Core IIS发布问题和解决 2022.10.1~2022.10.6 跨越的深坑

项目是Uniapp+ASP.Net Core WebAPI + EFCore +三层架构 ,在开发过程中大部分已弄完,但是想挂载到IIS时暴露出一些坑 ,这里我为大家整理了我最近遇到的一些问题


ASP.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权限的问题并且发现进程模型标示有误

下面就是我的一些解决步骤,


步骤1

第一步就是解决标示和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

总结:不积跬步无以至千里,不积小流无以成江河;希望文章能够对你有所帮助。


最后一次编辑于  2022-10-06  
点赞 0
收藏
评论
登录 后发表内容