前言
这个问题是在将项目发布到IIS上出现的错误,在本地的测试时可以的,在服务器上运行的话也是可以,但是当发布到IIS上就出现了这个错误。导致这个错误的原因其实是IIS(应用程序池)和数据库直接的问题。在网上查找了下原因并整理归纳了一下。
第一种解决方法
1、检查下你的项目里的配置里是不是开启了集成验证模式(因为要和IIS应用程序池里你发布的保持一致)
"ceshi": "data source=127.0.0.1\\MSSQLSERVER16;integrated security=True;initial catalog=TestData;user id=sa;password=123;pooling=true;max pool size=2"
主要观察integrated security=True;在这种情况下要求网站程序池账号与sqlserver运行使用的账号一致。
解决方法:
1.在IIS应用程序池中看一下是否是集成模式。如果开启了集成验证模式,那 就是应用程序池里发布的网站的标识的问题了。
2.选择网站,右击找到高级设置,点击标识,把标识修改为NetworkService。
3.打开你的sqlserver查看你的账户里有没有NetworkService这个用户,如果没有就创建一个。
创建步骤可自行百度。这个方法是网上最多的一种解决办法,其实还有一种解决办法比较简单。
第二种解决方法
在项目配置中,直接去掉集成模式或者把集成模式改成False,这个方法所谓简单高效。
在这里我是直接把集成模式改成了False,可以成功访问!