.net API发布后无法访问Db

时间:2019-02-05 16:35:17

标签: c# asp.net entity-framework iis

我编写了一个带有控制器的小型ASP.NET Web应用程序,该控制器可以访问我的本地数据库以检索信息。当我从Visual Studio启动应用程序时,一切正常,但是当我将应用程序发布到IIS时,出现此错误:

“发生错误。”,“ exceptionMessage”:“建立与SQL Server的连接时发生与网络有关或特定于实例的错误。找不到服务器或无法访问该服务器。验证实例名称为正确,并且SQL Server已配置为允许远程连接。(提供者:SQL网络接口,错误:50-发生本地数据库运行时错误。无法创建自动实例。”

我不明白为什么该应用程序可以在Visual Studio中运行,但是发布后却失败了。我的连接字符串(当我使用EntityFramework创建控制器时自动生成)是:

<connectionStrings>
<add name="ToDoContext" connectionString="Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=ToDoContext-20190205170505; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|ToDoContext-20190205170505.mdf"
  providerName="System.Data.SqlClient" />

我注意到,当我在Url中运行VS形式的应用程序时,有端口号,而在IIS中则没有(我不知道这个事实是否会产生影响)。有什么建议么?谢谢。

2 个答案:

答案 0 :(得分:3)

此连接字符串指向LocalDb的实例。您极不可能在服务器上安装此程序,因此会出现连接错误。

您需要找出哪些SQL Server实例可用于IIS应用程序。在登台或QA环境中,它可能只是2146-2148,但在生产中,它很可能是单独的服务器。

localhost也不太可能起作用(并且可能不应该起作用)。您需要从DBA获取用户名和密码,然后使用它。

答案 1 :(得分:0)

由于您使用的是集成安全性,请确保按照以下说明为SQL Server设置IIS使用的applicationpoolidentity:https://blogs.msdn.microsoft.com/ericparvin/2015/04/14/how-to-add-the-applicationpoolidentity-to-a-sql-server-login/