2017-03-06 17 views
0

我收到以下錯誤,當我嘗試做一個帖子到我的Azure的REST API的應用程序的無效的狀態代碼:REST API Azure的錯誤:「Microsoft.Rest.HttpOperationException」操作返回「創造」

Exception: Exception caught: 'Microsoft.Rest.HttpOperationException' in Program.exe ("Operation returned an invalid status code 'Created'"). Exception caught: 'Microsoft.Rest.HttpOperationException' in Program.exe ("Operation returned an invalid status code 'Created'") 13,495.67s [7568] Worker Thread

它正確地發佈到API應用程序(並將信息放置在API應用程序會談到的數據庫中),但由於某些原因,它看起來像返回代碼沒有正確處理。當我將REST API客戶端添加到我的解決方案時,該職位功能是爲我自動生成的。對於解決方法,我只是將它嵌套在try/catch中,但我真的想解決這個問題,以便在調試時標記的異常是合法的。

+0

Azure還允許我們[遠程調試](https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-dotnet-troubleshoot-visual-studio#a-nameremotedebugaremote -debugging-web-apps)與Vistual Studio。爲了執行我認爲可能在Rest API中存在邏輯錯誤。 請嘗試遠程調試它。如果還沒有解決,請在可能的情況下分享您的API代碼。我們也可以使用fiddler來獲取更多細節的http請求。 –

+0

@ TomSun-MSFT它返回Rest.HttpOperation不熟悉的狀態碼。這個狀態代碼是在什麼地方定義的? 如果一切工作正常,我如何使用API​​應用程序進行遠程調試?它正在返回201代碼並使用API​​應用程序在數據庫中成功創建,但該代碼只是沒有通過Microsoft.Rest.HttpOperation進行處理。 –

回答

0

按照Microsoft.Rest.ClientRuntime.Azure源代碼CheckResponseStatusCodeFailed功能,我們可以知道,如果httpStatusCode.Created & &方法== HttpMethod.Put然後CheckResponseStatusCodeFaild函數將返回false。但在你的意見中,httpStatusCode.Created & &方法== HttpMethod.Post,然後CheckResponseStatusCodeFailed等於true。然後它會拋出異常。

private static bool CheckResponseStatusCodeFailed<TBody, THeader>(
      AzureOperationResponse<TBody, THeader> initialResponse) 
     { 
      var statusCode = initialResponse.Response.StatusCode; 
      var method = initialResponse.Request.Method; 
      if (statusCode == HttpStatusCode.OK || statusCode == HttpStatusCode.Accepted || 
       (statusCode == HttpStatusCode.Created && method == HttpMethod.Put) || 
       (statusCode == HttpStatusCode.NoContent && (method == HttpMethod.Delete || method == HttpMethod.Post))) 
      { 
       return false; 
      } 
      return true; 
    } 

在我的選擇,請試試改變HttpMethod.PostHttpMethod.Put或添加SwaggerResponse屬性[SwaggerResponse(HttpStatusCode.OK)]爲要指定有效的HTTP響應代碼的Web API操作方法。有關SwaggerResponse屬性的更多信息,請參閱customize expected response codes using the SwaggerResponse attribute

+0

Swagger響應屬性做到了!謝謝湯姆! –

+0

如果有用,請將其標記。 –