我编写了一个带有控制器的小型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中则没有(我不知道这个事实是否会产生影响)。有什么建议么?谢谢。
答案 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/