2011-02-28 31 views
3

我有一個使用MS SQL Server 2008數據庫的Web應用程序。最近我做了兩個數據庫副本,一個用於正在進行的開發,另一個用於用戶開始測試和評估應用程序。ASP.NET應用程序指向錯誤的數據庫問題

我現在有兩個獨立的Web應用程序。我已將'test'版本的web.config更改爲指向測試數據庫,但似乎仍使用以前的版本。

這是否緩存在某處?我在框中運行了IISRESET,但我的web應用程序的「測試」版本似乎仍指向錯誤的數據庫。

這讓我瘋狂,任何幫助表示讚賞。

+0

不,你說聲聽起來不錯,檢查你的global.asax中是否有東西可能會覆蓋這個。 – Ryk 2011-02-28 21:24:47

+2

我也可以提出一個很好的實踐建議;爲你的SQL Server使用SQL別名。所以創建一個名爲prod的別名,一個名爲test並讓它們指向正確的SQL數據庫,並在不同端口上運行prod和測試。例如,以14331爲例,並在14332上進行測試。然後,您可以在PC上使用本地防火牆實現不接受來自測試網絡服務器的連接等。這樣您就可以隔離產品和測試。實際上,良好的做法總是會告訴你,prod不應該能夠看到de&test和vica。 – Ryk 2011-02-28 21:30:02

+0

您是否在使用帶有dbml文件的Linq-to-SQL? – Thomas 2011-02-28 21:43:15

回答

4

只是瘋狂的猜測:您的連接字符串可能未配置在您認爲的位置。要麼你改變了錯誤的連接字符串,要麼連接字符串根本沒有從web.config中讀取。

配置不會緩存在任何位置,因此當您更改連接字符串並啓動應用程序時,會更改已更改的值。

創建數據庫連接的數據訪問代碼的部分是什麼樣的?

+0

我使用LINQ進行數據訪問。我剛剛再次檢查,我的web.config中的'Initial Catalog'值是定義指向數據庫的'測試'版本。 – 2011-02-28 21:30:27

+0

@Jimmy您可以使用web.config的''部分編輯您的文章,以及'DataContext'新增的代碼行嗎? – jevakallio 2011-02-28 21:33:06

+0

我發現這個問題 - 我的'測試'版本代碼被包含在包含其他版本的文件夾中,所以它看起來像上面目錄中的web.config正在覆蓋下面目錄中的web.config - 這聽起來是否正確?我沒有創建與其他版本相同級別的測試版本,它似乎工作。我沒有意識到web.config的工作是這樣的 - 生活和學習我猜。 – 2011-02-28 21:40:34

2

確保連接字符串不在其他地方,比如hibernate.config。

+0

這個地方在哪裏? – 2011-02-28 21:27:06

1

如果您從原始數據庫恢復了測試數據庫,並且您使用的是同義詞,那麼可能您的同義詞的名稱具有全名,包括數據庫名稱。嘗試更改這些名稱從同義詞名稱中刪除數據庫名稱!它會工作!

0

作爲@Maria回答後的補充/補充說明,如果右鍵單擊恢復的[新]數據庫(例如Test_DB),單擊'文件',然後查看'數據庫文件',它們可能仍然指向例如MAIN_DB和MAIN_DB.log。您可能想要將它們更改爲例如TEST_DB和TEST_DB.log,以便您的測試數據庫實際指向正確的(測試)數據文件。 (但是,當您將[實時]數據庫恢復到新的[測試]數據庫時,這可能只是將您的測試應用程序指向測試數據庫所需的多個步驟中的一步。)

相關問題