所以,我一直在玩ASP.net MVC4和新的WebAPI過去幾天。在開始一個新應用程序時,我總是會做的第一件事是將<trust level="Medium" />
放入我的Web.config中,這樣我就可以確定我的應用程序可以在大多數主機上運行。ASP.net MVC4 WebAPI JSON中信任
通常,如果我使用股票微軟的東西一切正常,沒有問題。但今晚我在Brad Wilson的Webstack of Love presentation之後遇到問題。我所有的AJAX調用都返回一個Server 500錯誤。但是,當我直接在瀏覽器中打開WebAPI時,它將以XML格式返回所有內容。
因此,我認爲使用WebAPI控制器序列化爲JSON是導致問題的原因。 我的問題是如何解決這個問題?
微軟教導共享主機安全地開展工作並將其鎖定到中等信任度,然後創建在中等信任度下無法使用的新Web技術。當它是最終版本並且二進制文件安裝在GAC中時,也許一切都會好起來的?共享主機可能需要幾個月才能升級到最新,最好的版本。
這似乎是最大的問題通常是反射-90%以上的東西我嘗試過,不會在中等信任上運行是由於這個(例如,我喜歡用AutoMapper代替手編碼ViewModel =>實體映射)。有沒有辦法將反射限制到應用程序中的程序集,以便它可以成爲中等信任功能集的一部分,並使此問題成爲過去?
當我發現Application_Error事件甚至沒有在我的Global.asax中觸發時,我在IIS上設置了失敗的請求跟蹤。這是拋出的異常。不知道如何獲得更多的細節。
Warning -MODULE_SET_RESPONSE_ERROR_STATUS
ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 500
HttpReason Internal Server Error
HttpSubStatus 0
ErrorCode 0
ConfigExceptionInfo
Notification EXECUTE_REQUEST_HANDLER
ErrorCode The operation completed successfully. (0x0)
鏈接sample project displaying the issue。也包含在「測試」目錄下的是我的提琴手測試的截圖:XML-fiddle.png & JSON-fiddle.png。
我沒有做到SignalR,它不包含在我的項目中。它僅在返回JSON(通過jQuery或帶JSON的Fiddler)返回Medium Trust時發生。將嘗試你詳細的錯誤方法,看看我能否獲得更多的細節。 – Sam 2012-07-30 02:20:41
嘗試了您提到的提示,但沒有提供任何其他信息。將VS2010與嵌入式Web服務器一起使用時,WebAPI將引發500內部服務器錯誤,並且響應中沒有包含其他信息(使用Fiddler)。 – Sam 2012-07-30 11:12:17
我試過IIS以確保它不是卡西尼的東西。再次,具有JSON結果的WebAPI在完全信任下工作,但是當我切換到中等信任,500內部服務器錯誤時。在兩種情況下都可以使用XML結果的WebAPI。我無法從應用程序獲得任何額外的錯誤信息(不解僱Application_Error),所以我啓用IIS失敗的請求跟蹤。用這些信息更新了我的問題。 – Sam 2012-07-30 14:25:48