加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 精品文章 > 随笔

net6部署到IIS总结

时间:2021-12-17 15:03:59  来源:  作者:

环境说明

  1. 本地环境:[Windows 10.0.19042.1387]   VS2022正式版  .net6.0.100  SQL Server2019 
  2. 服务器环境: [Windows2012 6.2.9200]  [SQL Server2012]   无.net 环境  

部署步骤:

  1. 服务器安装环境包。下载Hosting Bundle版本,并安装。下载链接: https://dotnet.microsoft.com/download/dotnet/6.0 ,也可以直接用这个下载:https://dotnet.microsoft.com/download/dotnet/thank-you/runtime-aspnetcore-6.0.0-windows-hosting-bundle-installer
  2. IIS新建程序池 byy48net,分别设置为 无托管代码集成模式,这里要注意,启用32位模式,要根据自己的配置,选择true或者false。这里我选择false。
  3. IIS新建网站,指定程序池为 byy48net
  4. VS工程上右键选择发布,本文是使用FTP方式发布的。

 

发布后发现网站运行不起来,整理一下踩过的坑。

第二个坑:通过命令dotnet run报错,SQL的错误

原因:发布打包的时候,没有将资源文件一齐打包

处理方法:手动把资源文件拷贝到服务器对应目录。

 

第一个坑:调试信息出不来,设置了web.config,stdoutLogEnabled设置为true,不会自动生成日志文件。

处理办法:进程池里面的32位模式选择错了。旧的是true的换成false,旧的是false的换成true。

 

第三个坑:使用了Directory.GetCurrentDirectory(),导致获取不到根目录。

处理方法1:更改代码,通过单例模式的全局类,设置 AppContext.BaseDirectory 为根目录。

                  不过调试的时候,读取到的不是代码目录,运行不太方便。

                  不能使用的函数:Directory.GetCurrentDirectory(),Environment.CurrentDirectory。这两个 获取到的目录都是c:\windows\system32\inetsrv。

处理方法2:采用进程外托管,作者没有使用这个办法,有兴趣的可以自行搜索一下。

                     官网介绍: https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/out-of-process-hosting?view=aspnetcore-6.0

 

第四个坑:System.DllNotFoundException: Unable to load DLL 'Microsoft.Data.SqlClient.SNI.dll' or one of its dependencies: 拒绝访问。 (0x80070005 (E_ACCESSDENIED))

处理方法1:进程池标识修改为,LocalSystem。

                    右键进程池,选择高级设置-->进程模型-->标识-->内置账户-->选择LocalSystem ,设置完成后重启服务。

处理方法2:修改目录权限

                    网站根目录,右键属性-->安全-->编辑-->选择IIS_IUSR账号-->增加勾选“读取和执行”,保存后重启服务。

 

引用:参考的链接

https://github.com/dotnet/sdk/issues/7480

 

 

 

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门