2011-08-07 62 views
0

我有一個非常不尋常的問題。我有一個使用LINQ到SQL的ASP.NET應用程序,並且在大多數服務器上工作良好。然而,應用程序存在於同一網絡上的另一臺服務器上,而最近的一次更新後,每當我打開一個新的DataContext像這樣:LINQ-to-SQL DataContext在某些服務器上爲空

LINQDataContext dc = new LINQDataContext(); 

直流對象爲空,所以我得到的對象引用錯誤,試圖用它。我無法在我的開發機器或應用程序所在的其他服務器上覆制此內容,所以我很困惑爲什麼會出現這種情況。有任何想法嗎?

+0

是'dc' a *字段*(類變量)還是* local *(方法變量)? –

回答

1

由於您使用您的DataContext的默認構造函數,然後連接字符串是從網絡讀取。配置。所以我們可以建議,如果沒有正確的連接字符串,該服務器上的應用程序具有不同的配置。但是我們在項目中還遇到過一件事。在配置文件中連接字符串存儲的ASP位置的新版本中已更改。我的指尖沒有代碼,但可以使用constructor that takes connection string作爲參數來測試我的建議。從配置手動讀取連接字符串或只是爲了測試目的而對其進行硬編碼。

1

這樣的事情不會發生。當你調用一個標準的.NET類型的new運營商,有兩種可能的結果:

  1. 構造函數返回正常和值分配
  2. 構造函數拋出一個異常,該值不分配

除非您立即發現異常並忽略它,否則您可以確定該變量已被分配。這意味着你的問題可能在別的地方。

(在技術上,還有第三種選擇 - 構造函數永遠不會返回和無限循環,但在這裏,這是不相關的。)

+0

實際上*在一個故意製作的*邊緣案例中,您可以使「新」返回null,但您無法爲數據上下文執行此操作。只是提到它的瘋狂(它不適用於這個問題)。如果你想要挖掘出這個例子;)編輯:它在這裏:http://stackoverflow.com/questions/194484/whats-the-strangest-corner-case-youve-seen-in-c-or-net/ –

+0

@Marc,真的很有趣。 – svick

相關問題