SqlException:使用 LocalSystem 作为标识时对象名称 dbo.<tablename> 无效

SqlException: Invalid object name dbo.<tablename> when using LocalSystem as Identity

我在我的本地 IIS (7.0) 上部署了一个 asp.net web api,但我无法访问数据库。

当标识(在进程模型下)设置为 LocalSystem 时,API 将 return 此异常:

Invalid object name 'dbo.tablename'

如果我将标识设置为 ApplicationPoolIdentity,API 将 return 此异常:

Cannot open database "dbname" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\ASP.NET v4.0'.

尝试过的解决方案:

  1. Login failed for user 'IIS APPPOOL\ASP.NET v4.0'

  2. https://www.youtube.com/watch?v=18-zatWd68s

  3. 已将对文件夹和 .mdf 文件的权限添加到 'ASP.NET v4.0'

  4. https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-2-instance-ownership/

其他相关信息:

连接字符串(在 web.config 中)

<add name="DbContext" 
     connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=[dbname];Trusted_Connection=Yes;" 
     providerName="System.Data.SqlClient" />

我还尝试了 运行 使用 Visual Studio 使用 IIS Express 的应用程序,它工作正常。

您已经看过 https://blogs.msdn.microsoft.com/sqlexpress/2011/12/08/using-localdb-with-full-iis-part-2-instance-ownership/

它说你基本上有 3 个选项,

  • 运行 IIS 作为您的 ID(坏主意),
  • 运行 localdb 作为共享实例,或者
  • 使用SQL快递

后者可能是最好的建议。