我的情況是這樣的:在OpenRasta中,您應該如何處理編解碼器錯誤或異常?
- 客戶端應用程序執行對抗OpenRasta暴露端點的HTTP POST。
- 請求的主體包含導致編解碼器出現問題的錯誤 - 這是
OpenRasta.Codecs.IMediaTypeReader
的自定義實現。這將JSON負載轉換爲處理程序期望的POCO。 - 編解碼器會以有用的方式拋出一個描述錯誤的異常。例如:
Newtonsoft.Json.JsonReaderException: After parsing a value an unexpected character was encountered: ". Line 4, position 5.
- 客戶端應用程序收到HTTP 405 - MethodNotAllowed。客戶端沒有看到任何異常細節。
如果編解碼器被修改搭上JsonReaderException
並返回Missing.Value
,類似於Implementing a codec維基,然後客戶端會收到一個HTTP 500 - 內部服務器錯誤。響應的身體還介紹了以下異常:
System.InvalidOperationException: The operation is not ready for invocation.
at OpenRasta.OperationModel.MethodBased.MethodBasedOperation.Invoke()
at OpenRasta.OperationModel.Interceptors.OperationWithInterceptors.<Invoke>b__0()
at OpenRasta.OperationModel.Interceptors.OperationWithInterceptors.Invoke()
at OpenRasta.OperationModel.OperationExecutor.Execute(IEnumerable`1 operations)
at OpenRasta.Pipeline.Contributors.OperationInvokerContributor.ExecuteOperations(ICommunicationContext context)
at OpenRasta.Pipeline.PipelineRunner.ExecuteContributor(ICommunicationContext context, ContributorCall call)
我應該如何修改我的應用程序,以便:
- 客戶端收到一個HTTP 400錯誤的請求。
- 客戶端收到一個字符串,其中包含解碼器中遇到的異常的詳細信息。
在Google Groups上找到這條相關線索:http://groups.google.com/group/openrasta/browse_thread/thread/5deb77ebdc78d79f – Iain 2012-03-29 15:15:16