System.AccessViolationException: 嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞

之前也遇到過這樣的問題,一直未解決,最後重新安裝系統,終於解決了。

沒想到1個月以後,又出現了這種情況,讓我奔潰,這次決定一定要找出原因;

調試後發現, connection.Open();以後報錯,System.AccessViolationException: 嘗試讀取或寫入受保護的內存。這通常指示其他內存已損壞,網上搜了很多都沒有作用。

然後我發現 連接本地數據庫是好的,連接遠程數據庫是報錯了,但是在sql server Management中是好的  

然後在VS的服務資源管理器中找到了問題,發現VS2010 ,只要一連接遠程數據庫就立馬關閉掉了,VS2008則是好的,最後發現在關掉的瞬間,會彈出一個提示,經過幾次反覆截圖,終於找到了關鍵:



provider SSLProvider error:0

在網上一搜,豁然開朗,解決方法如下:

1:使用OLEDB ,不再使用SQLClient可以解決;

2:這個最方便,在開始運行欄中 輸入 CMD,然後以管理員身份運行:輸入:netsh winsock reset 後,系統提示需要重啓電腦,重啓後解決!




最後補充一下,這個命令的意思:

  netsh winsock reset命令,作用是重置 Winsock 目錄。如果一臺機器上的Winsock協議配置有問題的話將會導致網絡連接等問題,就需要用netsh winsock reset命令來重置Winsock目錄藉以恢復網絡。這個命令可以重新初始化網絡環境,以解決由於軟件衝突、病毒原因造成的參數錯誤問題。 netsh是一個能夠通過命令行操作幾乎所有網絡相關設置的接口,比如設置IP,DNS,網卡,無線網絡等,Winsock是系統內部目錄,Winsock是Windows網絡編程接口,winsock工作在應用層,它提供與底層傳輸協議無關的高層數據傳輸編程接口,reset是對Winsock的重置操作。當執行完winsock的命令重啓計算機後,需要重新配置IP。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章