我正在使用asp.net web api,当我在微软视觉工作室内置服务器上运行我的项目时,每件事情都很好,但当我在本地iis服务器上托管它时,我收到以下错误
底层提供商在Open
上失败我正在使用实体框架,我在web.config中的连接字符串是
<add name="Entities" connectionString="metadata=res://*/Models.School.csdl|res://*/Models.School.ssdl|res://*/Models.School.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=DBName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
答案 0 :(得分:1)
根据该连接字符串,尝试连接到SQL实例的标识是在应用程序的IIS应用程序池中指定的用户帐户(通常为iis apppool\defaultapppool
)。你要么需要;
正在进行调试时,用于通过Integrated Security=True
连接的帐户是当前登录的用户帐户 - 可能设置为允许您连接到数据库。但是,IIS需要运行特定帐户,不是当前登录的用户 - 因此需要上面的选项。
答案 1 :(得分:0)
在IIS下,您无法打开数据库连接,这是正常的。
当您在Visual Studio内置服务器下运行时,您的asp.net 应用程序将基本上在IISExpress下运行。 IISExpress 在运行Visual Studio的同一用户下运行,这就是“你好”。但是 当您在IIS下运行时,您的应用程序在w3wp.exe进程下运行 这将在IIS应用程序池标识下运行。 此帐户无法打开数据库连接。
希望它有所帮助!