[英]Catch exceptions in ASP.NET resulting from Generic Handler (ashx) file
我正在嘗試使其他服務器端堆棧與我的ASP.NET網站一起運行。 我的ashx文件似乎拋出500 Internal Server Error。 我如何確定該ashx文件引發什么異常或引發500的原因? 當我附加到IIS 7 w3wp.exe進程時,它不會引發異常,但是我正在讀這種情況。
ashx文件位於我的ASP.NET站點的根目錄中,並且“屬性”已設置為可編譯。
GET http://uhc-8:8883/MyApp/ExtDirectProxy.ashx 500 (Internal Server Error) index.html:27
Uncaught TypeError: Cannot read property 'isProvider' of null ext-all-debug.js:74832
allow right click initializing for http://uhc-8:8883/MyApp/index.html rightclick.js:1
allow right click processing http://uhc-8:8883/MyApp/index.html rightclick.js:25
如果您有一個名為“ App_Code”的文件夾,則可能會遇到頭痛和偏頭痛。 或簡單地用一些隨機名稱(例如“代碼”或“數據”)替換“ App_Code”,然后將您的類放在此處以解決此問題。 就我而言,我的項目GUID是Web應用程序和C#類型。
最佳答案:
注意:
我使用帶有靜態端口的IIS運行站點,而不使用帶有動態端口的Visual Studio 2012。 我在Web服務器上具有特定的服務器配置,因此我希望該站點的行為與我們發布的站點的工作方式相同。 這就是為什么我那樣運行它。
回答我的問題:
發生這種情況是因為在bin文件夾中有App_Data類的重復版本。 * .cs的“編譯”版本和* .cs的網站版本。 當存在多個同名類時,將發生“ isProvider”錯誤。 部署ASP.NET應用程序時,僅部署* .cs文件的編譯版本。 在開發環境中,我們將其設置為“屬性”>“構建動作”>“無”。
不確定周圍是否有簡單的方法。 這可能與將文件存放在臨時文件夾和/或obj文件夾中有關,但不能完全確定。 將需要更多的故障排除來發現原因。 同時,這里列出了解決此問題的方法。 不知道其中的某些或全部是否必要,但現在可以使用。
解決步驟:
C:\\WINDOWS\\Microsoft.NET\\Framework\\{.NET version}\\Temporary ASP.NET Files\\
現在一切正常!
編輯:
實際問題是我在Visual Studio中引用了一個外部項目,但是沒有dll文件,因為項目類型是控制台應用程序而不是類庫。 真正的問題是,當您對其他項目具有using語句時,Visual Studio說它可以很好地編譯代碼(在App_Code中),但是即使已為所有* .cs文件中的Build Action> Compile選項設置了,Visual Studio也會說“ Building Success”。 App_Code。 運行Web應用程序時,必須將其重新設置為Build Action> None才能運行。 但是,由於App_Code中的* .cs文件實際上並未使用新代碼進行編譯(如果IIS中的ASP.NET處理這些App_Code * .cs文件的方式是這樣),則由於沒有良好的CIL代碼,它會引發500 Internal Server錯誤。在運行時。 為了解決這個問題,我只是將項目類型更改為“類庫”,它仍然沒有錯誤,但是現在它可以將dll引用到其他項目。
找到重復的類時,總是會發生isProvider錯誤。 所以我不確定為什么會發生這種情況,但是一旦您修復了上面的部分,那基本上就消失了。
您可以在Global.asax
文件中使用Application_Error
事件來捕獲該錯誤。
protected void Application_Error(Object sender, EventArgs e)
{
HttpContext ctx = HttpContext.Current;
Exception exception = ctx.Server.GetLastError();
int httpCode = ((HttpException)exception).GetHttpCode(); // check if it is 500
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.