2017-10-06 118 views
2

我正在处理asp.net web api,当我在服务器上构建的微软视觉工作室上运行我的项目时,每件事情都很好,但是当我将它托管在本地iis服务器上时,以下错误底层提供程序在Open iis上失败

基础提供失败的开放

我使用实体框架,在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=&quot;data source=.\sqlexpress;initial catalog=DBName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 

回答

1

基础上的连接字符串,身份试图连接到您的SQL实例是应用程序的IIS应用程序池中指定的用户帐户(通常为iis apppool\defaultapppool)。你要么需要;

  • 让这个帐户来访问SQL数据库
  • 把必要凭据SQL帐户到连接字符串
  • 设置的Windows帐户上的应用程序池的详细信息,以便连接应用。

发生了什么事是,当你正在调试,通过Integrated Security=True用来连接该帐户是在用户帐户的当前登录 - 这很可能设置允许您连接到数据库。但是,IIS需要一个特定的帐户才能运行,其中不是当前登录的用户 - 因此需要上述选项。

0

在IIS下,您无法打开数据库连接,这是正常现象。

当您在Visual Studio Built in Server下运行时,您的asp.net 应用程序将基本上在IISExpress下运行。 IISExpress 在运行Visual Studio的同一用户下运行,这是'You'。但是当您在IIS下运行时,您的应用程序运行在w3wp.exe进程 下,并且这将在IIS应用程序池标识下运行。 此帐户无法打开数据库连接。

请参考https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities-and-sql-server-express如何解决这个问题

希望它能帮助!

相关问题