2012-08-28 60 views
2

我正在部署一個ASP.NET MVC應用程序,並且在web.config中遇到困難。該應用程序將部署到我們的服務器,但將訪問不同的,非現場服務器上的數據庫。嘗試加載訪問數據庫的頁面時出現以下錯誤:ASP.NET MVC web.config - 用戶登錄失敗

'/'應用程序中的服務器錯誤。


登錄用戶'LOCALSERVERNAME $'失敗。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.Data.SqlClient.SqlException:用戶'LOCALSERVERNAME $'的登錄失敗。

在web.config中這個樣子的連接字符串:

<connectionStrings> 
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" /> 
<add name="AppEntities" connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=EXTERNALSERVERNAME;Password=****;User ID=****;Initial Catalog=AppData;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

因此錯誤是用於認證的本地服務器,這是剛剛託管的文件。應用程序中不與數據庫交互的純ASP頁面正在正確地服務。這個問題似乎只在嘗試訪問完全不同的服務器上的數據庫時出現。我也知道異地服務器的連接字符串是正確的,它適用於其他應用程序。

我很少處理配置的東西,我工作在一個非常有限的環境中,所以這很難排除故障。很感謝任何形式的幫助。

+0

LOCALSERVERNAME與EXTERNALSERVERNAME相同嗎? – Anthony

+0

@安東尼不,他們是不同的服務器。 LOCALSERVER是託管應用程序的本地服務器,EXTERNALSERVER位於其他位置,並託管數據庫。 –

回答

4

這通常意味着訪問數據庫的服務器駐留在另一臺機器上,該機器對它正試圖訪問的數據庫沒有權限。可以找到更多信息here

+0

注意:您真正需要做的是將LOCALSERVERNAME $添加到您的MS SQL安全訪問權限中,併爲其授予訪問您嘗試連接的數據庫的限制權限。不過,請仔細想一想,因爲您可以從您的網站向您的網絡打開潛在的危險安全漏洞。 –

+1

這似乎是問題所在。我們現在只將部署到同一臺服務器。謝謝! –