我有一個asp.net(3.5)web應用程序。 在一個頁面中,我使用了一個非託管C庫(一個模擬器),它根據一些輸入生成一組結果。奇怪的問題System.AccessViolationException
當我在web.config(發佈模式)中設置debug="false"
時,該調用將導致System.AccessViolationException
。如果我在調試器中,或者至少在web.config中設置了debug="true"
,那麼將出現該異常從不出現。
由於錯誤的性質,我將呼叫放入try-catch
以記錄異常,然後不會出現異常!
在調試模式下和/或在try-catch時,是否存在受保護內存空間上的一些神奇工作?
這真的很奇怪。不是我迷信,而是過去奇怪的事情發生在我身上。這就是爲什麼我遠離Web編程的原因...... AccessViolationException可能是由於您的應用程序沒有權限使用的磁盤訪問或其他資源訪問。它在您調試時可能是因爲它在調試期間分配了更多的權限。也許作爲用戶,您可以授予更多權限給應用程序,但匿名用戶沒有太多權限,因此失敗。 – 2011-03-18 15:48:24
你知道哪行代碼會拋出異常嗎?還是它出現在哪裏?後者通常是與框架相關的問題引起的,並且通常在加載過程中發生,至少對我而言。您的模擬器DLL可能不在具有權限的文件夾中,或者模擬器在加載過程中嘗試在沒有權限的情況下讀取/寫入。 – 2011-03-18 15:53:05
以及我不知道C應用程序內的代碼行。它在內存操作中使用,並使用應用程序有權訪問的領域內存在的小文件(App_Data)。如果只是調試模式問題,我會認爲它是與權限相關的,但try-catch現象使我認爲這是與框架有關的 – Jaguar 2011-03-18 17:16:16