2016-04-27 20 views
1

我有一個從MVC數據庫獲取數據的.NET MVC項目。使用SQL數據庫對IIS web軟件包進行故障排除

當我在本地機器上以調試模式運行項目時,它運行時沒有錯誤;然而,在使用Microsoft的Publish Wizard(創建一個.zip,將該.zip移動到網站所指向的wwwRoot文件夾)將項目部署到我的IIS服務器(我相信是版本6)之後,我遇到了一個問題:我訪問網站的主頁通過URL地址,但是當我輸入登錄ID時,它會產生一個內置的錯誤消息「無效的用戶ID」。

輸入有效的ID時唯一發生此錯誤的時間是數據庫無法到達以檢查登錄憑證。因此,使用SQL Profiler,我試着查看是否對數據庫進行了查詢 - 看起來答案是「否」。

我已驗證在IIS環境中正確配置了連接字符串,並且可以安全地假定這個問題沒有與代碼相關的錯誤。

的問題:還有什麼其他的故障排除方法可用於IIS和SQL互動,看看這個錯誤的根源是,或者你可能有什麼樣的建議,試圖消除這一問題

+1

IIS服務器上的應用程序事件。防火牆是否打開?他們在同一個域名? IIS服務器實際上可以'看''sql server嗎?此外,您可能需要記錄失敗/成功的登錄嘗試。默認情況下,SQL Server不記錄失敗的嘗試。 – WickedFan

+0

IIS服務器上的事件日誌(與託管SQL服務器的機器相同)提供了一條錯誤消息:「用戶'IIS APPPOOL \ OPOC'登錄失敗。原因:無法打開明確指定的數據庫」。我確定它們在同一個域中,因爲這個IIS服務器已經運行了一段時間的這個項目的測試環境。無論是否可以看到SQL服務器,我不確定如何確認,但是我曾假設如此,因爲在我對部分視圖進行了一些更改之後重新部署了應用程序之前,它已經工作了。 –

+0

我檢查了安全文件夾爲SQL服務器,並且已將APPPOOL \ OPOC添加到登錄列表中,所以我不認爲我使用的AppPool是問題所在,但我完全不熟悉IIS部署,所以或多或少,所以我可能是錯的 –

回答

1

將用戶添加到數據庫中登錄並授予此用戶對數據庫的訪問權限。你的代碼中的連接字符串應該有它的憑據。在你的機器上工作的原因很可能是因爲你是服務器上的系統管理員或其他東西。查找一種方法在連接字符串的參數中輸入憑據。

https://www.youtube.com/watch?v=Sp6lR15iWMk

+0

在查看生產服務器後發現的另一件事 - 它具有設置爲NetworkService的AppPool的Identity。我在測試環境中完成了這個工作,並且它也可以工作。我假定「網絡服務」標識將權限授予任何具有有效網絡訪問權限的人員? –

+1

嚴..在域控制環境中清除「NetworkService」。強烈建議在域級別創建服務帳戶。 – WickedFan

+0

有趣,感謝您的警告!因爲這不是一個非常關鍵的應用程序,所以我假設我的前任創建了所有這些,只是做了他似乎喜歡經常使用的「任何可以使其工作」的方法。將Identity設置爲LocalSystem仍然允許域中的所有計算機訪問該應用程序(只要它們根據域權限被允許),還是需要專門在主機箱上提升狀態?仍然在我的腦海裏整理出來,但是你比任何人都能給出更好的信息,所以我想我會問。 –