2017-08-07 54 views
0

發出的請求我正在使用<send-request>策略發出請求,並且需要檢查請求的狀態代碼。爲此,我試圖訪問response-variable-name的StatusCode屬性。但是,使用該代碼時 -訪問狀態代碼或使用<發送請求>

context.Variables["LogFailedEvent"].StatusCode 

我看到這個錯誤 -

錯誤元件'設置身體上線83,第4欄:「對象」不包含定義關於「的StatusCode」和沒有擴展方法「的StatusCode」接受類型「對象」的第一個參數可以發現

按照docs -

response-variable-name屬性用於訪問返回的響應。此屬性中定義的名稱可用作context.Variables字典中的鍵,以訪問IResponse對象。

要麼我誤解了文檔中的內容,要麼文檔錯誤。有人能夠提出解決方案嗎?


從政策有關章節

<choose> 
    <when condition="@(context.Response.StatusCode != 201 && context.Response.StatusCode != 202)"> 

     <send-request mode="new" response-variable-name="LogFailedEvent" timeout="20" ignore-error="true"> 
      <set-url>@(string.Format("{0}{1}?code={2}&statusCode={3}&statusReason={4}&message={5}", "{{BVT_LogEventsFailedFunction_Url}}", "{{BVT_LogEventsFailedFunction_Template}}", "{{BVT_LogEventsFailedFunction_Code}}", context.Response.StatusCode, context.Response.StatusReason, context.Response.Body.As<string>()))</set-url> 
      <set-method>POST</set-method> 
      <set-header name="Content-Type" exists-action="override"> 
       <value>application/json</value> 
      </set-header> 
      <set-body>@(context.Request.Body.As<string>())</set-body> 
     </send-request> 

     <set-body>@(string.Format("{{\"message\":\"event captured by LogFailedEvents\",\"requestId\":\"{0}\",\"statusCode\":\"{1}\",}}", context.RequestId.ToString(), context.Variables["LogFailedEvent"].StatusCode))</set-body> 

    </when> 
</choose> 

回答

2

你需要將其強制轉換:

((IResponse)context.Variables["LogFailedEvent"]).StatusCode 

此外,由於您選擇設置忽略錯誤=「真」,你可能想首先是要檢查變量包含了這個鍵,因爲在這種情況下,如果請求失敗,這個變量根本就不會被創建。

+0

謝謝,這是工作。 –

相關問題