2017-10-06 113 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如何解決這個問題

希望它能幫助!

相關問題