阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

IIS出现“System.Data.SqlClient.SqlException”时的解决办法

141次阅读
没有评论

共计 1501 个字符,预计需要花费 4 分钟才能阅读完成。

问题出现

最近正在学习 ASP.NET Core MVC,顺便弄了一个自己的个人小网站。基本上是开发一点,部署一点。不过,当我添加了 Entity Framework 之后,部署到 IIS 上却打不开了。页面提示一个 500 服务器错误就什么也没了。

:(Oops.
500 Internal Server Error

初步查询

我在 VS 中调试的时候明明好好的,于是我翻看了一下 ASP.NET Core 关于在 IIS 上部署的文档,上面提供了一个简单的检测错误来源的方法:

1. 如果在你的发布文件夹内使用 dotnet yourapp.dll 等命令运行程序可以正常运行的话,说明问题更可能出在 IIS 和 Kestrel 服务器的通信之间,你的应用程序本身应该是没问题的。2. 如果通过 IIS 可以正常浏览静态内容(比如图片,CSS 或者 JS),但是浏览页面却出现错误的话,说明问题更可能出现在你的应用程序上。

我照着使用 dotnet myapp.dll 命令测试了一下,发现我的程序没问题,那么问题看来就是出在 IIS 上面了。但是由于 IIS 只给出了一个 500 错误,没有更详细的日志,所以我暂时没有办法。

检查日志

于是我到了著名的程序员问答社区 StackOverFlow 上面提了个问题。其中一位大侠给了我思路。那就是打开日志追踪。找到发布文件夹中的 Web.config 文件,打开日志追踪 stdoutLogEnabled="true",由于 IIS 本身不会自动创建日志文件夹,所以还需要根据stdoutLogFile=".\logs\stdout" 来创建 logs 文件夹,来让 IIS 将日志记录到这里。修改完成之后需要在 IIS 中重启我的程序,然后再浏览器中访问,果然出现了迫切需要的程序日志。

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 – Local Database Runtime error occurred. 无法创建自动实例。有关错误详细信息,请参阅 Windows 应用程序事件日志。
)

有了日志,事情就好办多了。在这里我不得不插一句,在这个时候 VS 提醒我 ASP.NET Core 插件更新了,于是我就点了更新。不过更新失败了两次,我又看了一下更新日志发现是网络问题。于是又挂上了 ss 才成功更新。更新之后呢,我突然发现再次发布之后,IIS 居然直接提示出了我历经千辛万苦才找到的错误信息!在此我只能说以后再遇到更新,我就果断更新,没有任何犹豫了。

问题解决

刚才说了一些题外话。根据错误异常信息来看,这是 SqlServer 权限不够造成的。联想我开发时候正常,部署到 IIS 上却不正常了。说明还是 IIS 有哪里权限不够。上网在查了一下果然发现是这个原因。解决办法也很简单:打开 IIS 中的应用程序池,找到我的程序实用的应用程序池,打开高级设置,找到进程模型 -> 标识,然后修改为 LocalSystem 即可。

修改之后,我迫不及待的查看我的网站,这次果然正常了。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137482.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计1501字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中