我有一個Web項目(C#Asp.Net,EF 4,MS SQL 2008和IIS 7),我須要將其本地遷移到IIS 7(目前可在CASSINI上正常工做)。 sql
在IIS中,個人部署中擁有Default Web Site
。 個人部署和Default Web Site
都在ASP.NET v4.0池中(對於設置請看圖片)在池目標Framework 4上做爲個人Web項目。 當訪問該站點時,瀏覽器不顯示頁面,而是容許瀏覽器下載頁面。 數據庫
我還有其餘在IIS上本地運行的項目,它們沒有任何問題(可是它們不使用實體框架)。 瀏覽器
使用事件記錄器,我看到以下錯誤: 安全
Exception information: Exception type: EntityException Exception message: The underlying provider failed on Open. at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure) Login failed for user 'IIS APPPOOL\ASP.NET v4.0'. at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.SqlClient.SqlConnection.Open() at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
相關問題 服務器
更新:您能夠在有關此問題的資源中閱讀到,必須在MS SQL 2008上手動授予權限,這是他回答中的解釋。 使用IIS 7.5和MS SQL 2008 R2,不須要手動設置權限。 網絡
確保你有... 框架
Trusted_Connection=false;
在您的鏈接字符串中 ide
設置身份僅會使這項工做在個人頁面中進行。 工具
您完成了@Teddy
建議的操做, 仍然遇到相同的錯誤嗎? 網站
確保更改的是與虛擬目錄而不是父服務器相對應的應用程序池的設置。 每一個虛擬目錄都有其本身的AppPool,而且不會繼承。
啓動Visual Studio應用程序時,Cassini將以您本身的用戶身份運行您的網站。 IIS將您的網站做爲應用程序池標識運行。 除非授予應用程序池標識對數據庫的訪問權限,不然您將得到錯誤。
IIS引入了「應用程序池標識」以提升安全性。 您能夠在默認的「應用程序池標識」下運行網站,或者使用本身的名稱建立新的應用程序池,或者使用在用戶賬戶(一般是域賬戶)下運行的具備本身的名稱的新應用程序池。
在聯網狀況下(不在Azure中),可使新的應用程序池在Active Directory域用戶賬戶下運行; 與計算機賬戶相比,我更喜歡此賬戶。 這樣作能夠提供精細的安全性和對包括數據庫在內的網絡資源的精細訪問。 每一個網站都在不一樣的應用程序池上運行(每一個網站均以其本身的域用戶賬戶運行)。
在全部鏈接字符串中繼續使用Windows Integrated Security。 在SQL Server中,將「域」用戶添加爲登陸名,並在每一個網站的基礎上授予對數據庫,表,SP等的權限。 例如,Website1使用的DB1具備User1的登陸名,由於Website1在App Pool上以User1身份運行。
從Visual Studio內置DB(例如LocalDB)和內置Web Server部署到生產環境的一個挑戰來自如下事實:開發人員的用戶SID及其ACL不能在安全的生產環境中使用。 Microsoft提供了用於部署的工具。 可是可憐可憐的開發人員,他們習慣了新的簡單VS IDE中帶有localDB和localWebServer的開箱即用的功能,由於這些工具對於該開發人員將很難使用,尤爲是對於缺乏SysAdmin和DBAdmin支持或他們的專業知識。 可是,部署到Azure比上面提到的企業網絡狀況更容易。
我使用sql解決了這個問題,以下圖。
右鍵單擊db->屬性->權限->查看服務器權限->,而後選擇IIS APPPOOL\\ASP.NET v4.0
並授予權限。