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,不懂这是什么,可是它导致了错误,就说明这个身份肯定不行。

以上。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏惨绿少年

KVM 虚拟化技术

在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等...

58720
来自专栏恰童鞋骚年

.NET Core微服务之基于Consul实现服务治理

  Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartSt...

1.2K40
来自专栏惨绿少年

KVM 虚拟化技术

1.1 前言 1.1.1 什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体...

72250
来自专栏软件开发 -- 分享 互助 成长

CY7C68013A的一点总结

一、 值得参考的资料:FX2 TechRefManual、USB应用开发宝典、 LabVIEW-USB通信简单教程(用于参考生成labview驱动程序)、USB...

24380
来自专栏皮振伟的专栏

[qemu][io]虚拟化IO latency监控

前言: Linux的很多监控组件,主要针对IOPS和IO带宽进行监控。很多业务场景下,希望对IO的延迟做监控。单纯的await并不能反映出来IO的延迟具体情况。...

22020
来自专栏技术博文

linux ssh安全设置

修改ssh端口号: Port 8622 指定要绑定的网络接口,默认是监听所有接口,建议绑定到内网通讯的网卡地址 ListenAddress 192.168.1...

40360
来自专栏绿巨人专栏

Linux 技巧

当运行tmux时,实际上会运行一个tmux service,保持session的运行。

17220
来自专栏达摩兵的技术空间

mac总是卡死折腾记

如果你确认你mac是硬件ok,但是在某些程序运行的时候导致内存飙升,比如最明显吃内存的chrome,这时候可能就是你内存分配的一些问题,近期我就根据apple ...

14740
来自专栏吴伟祥

Linux 远程登录:Xshell、SecureCRT、Putty

       Alt + Enter -- 全屏   Alt + B --打开新的连接   Alt + 1/2/3/4/5.../9 -- 切换到第1/2/...

1.1K20
来自专栏大魏分享(微信公众号:david-share)

容器超融合的实现&持久存储的动态分配 : Openshift3.9学习系列第六终结篇

干货巨献:Openshift3.9的网络管理大全.加长篇---Openshift3.9学习系列第二篇

27330

扫码关注云+社区

领取腾讯云代金券