LocalDB 在 ASP.NET 程序中找不到数据库

LocalDB 在 ASP.NET 程序中找不到数据库:有时候错误信息是:无法找到数据库,请确认数据库名称是否正确;而有时候会变成:Cannot open database  requested by the login. The login failed.

其实第一个错误信息有时候是身份验证的问题导致的,如果真是数据库名称没写对,而苦苦地寻找解决方案,那就真的可以去撞墙了。

我出现这个问题的情况特别诡异,而这是我第一次接触 SqlServer,对其不大了解,导致了我花了很多时间才解决了这个问题。

首先,我在本机跑的时候是完全没问题的,可是当我部署到服务器上跑就出现了找不到数据库的问题了。

数据库以及表我都是写成控制台程序,以可执行程序的形式跑的,程序跑得很顺利,可是运行 ASP.NET 程序的时候却出错了。

于是我又写了一个测试连接数据库的控制台程序,结果跑得也是很顺利。这时候就纳闷了,百度出了各种解决方案,再次吐槽:国内的很多文章都特么是一字不落抄过去的,而 StackOverflow 也有很多解决方案,试了很多种方法,结果都是在几个错误信息中来回变动。

后来,我逐渐感觉是身份验证的原因,于是到微软官网查看了一下 SqlConnection.ConnectionString 的文档,想要看看如何在连接字符串中添加用户名密码,这两个参数没找到,我却先看到了“Initial Catalog- 或 -Database”参数,于是,我就把数据库参数添加到连接字符串中。

(原本我是先连接到 LocalDB 实例,再调用 ChangeDatabase 方法切换数据库的,于是每次在这个方法都报错:找不到数据库)

很令人惊喜的是,这次的错误信息不再是过去那几个中的一个了:Cannot open database requested by the login. The login failed.

很明确的,身份验证的原因。

百度一下,链接到 StackOverflow,看到了很多个熟悉的解决方案,而且解决率还很高,但对于我来说并没有解决成功,而且也看到了类似的解决方案,吐槽:跟国内差不多,拿别人的解决方案,稍微换一下,又是原创解决方案了,呵呵哒。

对于我的问题,正确的解决方案是倒数第三个:

I had this problem and what solved it for me was to:

  • Go to the Application pools in the IIS
  • Right click on my project application pool
  • In Process Model section open Identity
  • Choose Custom account option
  • Enter your pc user name and password.

 就是到服务器中的 IIS 找到应用程序所在的应用程序池,点击右边的高级设置(他上面说是右键,额。。。不知道是哪个版本的 IIS 是酱紫操作的,我的是 IIS7),然后设置“进程模型”的“标识”属性,弹出对话框后选择自定义账户,输入你登录服务器的账号密码,OK。

在这里就不截图了,不方便,233333

问题解决后,我突然恍然大悟,为什么控制台程序能跑得很顺利,而 ASP.NET 程序却报错?因为控制台程序不需要去设置程序的身份,默认使用登录系统的账户,而 ASP.NET 是托管在 IIS 中的,有涉及到身份验证,默认值为 ApplicationPoolIdentify,不懂这是什么,可是它导致了错误,就说明这个身份肯定不行。

以上。

转载于:https://my.oschina.net/VenyoWang/blog/739320

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值