【问题标题】:asp.net app on IIS can't connect to localdbIIS 上的 asp.net 应用程序无法连接到 localdb
【发布时间】:2017-02-24 19:45:02
【问题描述】:

我有一个在 IIS 上运行的 asp.net Web 应用程序,一切都很好,直到我尝试访问数据库时才收到此错误:

我已阅读将 LocalDB 与完整 IIS 一起使用的两部分:1 Part | 2 Part

我按照说明操作,但仍然出现错误,有没有办法检查我是否正确执行了这些步骤?

还有什么我可以检查可能导致此错误的吗?

注意:我在 asp.net 和 asp.net 核心应用程序中尝试过这个,核心应用程序根本没有给出任何描述,所以我正在用 asp.net 进行测试。我使用的数据库是 Visual Studio 提供的数据库。如果您希望我提供任何我不乐意提供的进一步信息,我已经被这个问题困扰了一段时间,似乎无法解决它。

【问题讨论】:

  • 你可以通过 SSMS 访问你的 localdb 吗? SQL Server 配置管理器中是否启用了 tcp/ip?
  • 请检查此条件sqlmusings
  • @gofr1 我可以使用 SSMS 连接到数据库,但是配置管理器给了我错误“无效的命名空间”
  • 请尝试here的解决方案
  • 好吧,所以我为 asp.net 找到了一个“好的”解决方案,它没有发布 .mdf 文件并且没有对 wwwroot 文件夹的完全权限(读/写)。当然仍然没有连接到实际的数据库。

标签: c# asp.net sql-server iis


【解决方案1】:

其实它并不太复杂,但是我对 IIS 和数据库的缺乏经验使我感到困惑。希望这可以帮助将来的人。我可能错过了一些小的步骤/调整,但那是因为整个解决方案需要一段时间来设置。

  1. 确保您实际安装了 SQL Server。你可以下载我用here的2008版本。安装起来可能很麻烦,实际上我在安装时搞砸了,here is the vid I watched(我没有安装:数据库引擎服务)。
  2. 接下来,您要确保 IIS 身份(在我的情况下为 IIS APPPOOL\ASP.NET v4.0)有权连接到数据库服务器。检查答案here
  3. 一旦连接到数据库服务器,它需要能够连接到服务器上的数据库(我不知道数据库和数据库服务器是两个不同的东西)。您需要执行与 步骤 2 类似的操作,在 SSMS 中展开数据库文件夹,并选择您要授予访问权限的数据库,那里还有一个安全文件夹,您要添加该文件夹的身份。

其他有用的点:

  • 如果您的 sql 配置管理器未打开,请tell it to,谢谢 gofr1。这是一个非常有用的工具,用于检查您的数据库连接(事实证明)
  • 确保将 connectionString 设置为指向 sql 服务器。确保它没有连接到位于 connectionString 中 AttachDbFilename=|DataDirectory|\your_database_name_here.mdf 的 mdf 文件。
  • 对于 asp.net Core,请阅读 is god 的文档,因为一旦将应用程序部署在 IIS 上,错误就不存在了,它将在黑暗时期有所帮助。始终检查publishOptions

为了进一步帮助您了解整个过程是如何工作的,感谢 gofr1 read here。没有解决问题,但是worth a read

如果我记得我遗漏了什么,以后可能会在此处包含更多内容。

【讨论】:

  • 我有类似的问题,但我的 SQL 配置管理器已启动,Visual Studio 和 SSMS 都可以连接到数据库,我没有在连接字符串中使用 .mdf。 IIS 应用程序池标识正确且已设置为“加载用户配置文件”= True。 “system.applicationHost/applicationPools” -> applicationPoolDefaults -> processModel -> setProfileEnvironment 也已设置为 True。然而,问题仍然存在。
  • 然后我把IIS应用池标识改成本地系统,再改回Windows用户,然后回收,就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 2016-08-10
  • 1970-01-01
相关资源
最近更新 更多