我需要能夠測試System.Data.SqlClient.SqlException是否由於網絡錯誤(.NET環境連接到MS SQL Server)。如果是這樣,我可以告訴用戶他的連接有問題,但如果不是這樣,它很可能是我的代碼中的一個錯誤,它被區別對待。很明顯,不要發生誤報(宣佈在出現問題時提出網絡問題)。確定是否由於網絡問題導致SqlException
在相關問題over here有人建議從例外文本中提取信息。這對我來說很難,也很難,因爲文本是本地化的,並且可能因環境而異。
暫時,我考察了某些函數調用,這(通過經驗)與網絡問題相關的調用堆棧:
System.Data.SqlClient.TdsParserStateObject.WritePacket
System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket
System.Net.Sockets.SocketException
然而,這些彈起的,如果有,而超時執行,例如,一個SELECT查詢。所以在那裏,我將不得不恢復到檢查「超時」是否出現在異常消息中,這很醜陋。
有沒有人有更好的主意?