Asp.net-Web-Api

獲取 HttpActionExecutedContext 結果值

  • July 18, 2017

我創建了一個過濾器,它繼承了 asp.net web api 中的 System.Web.Http.Filters.ActionFilterAttribute,並希望訪問 HttpActionExecutedContext 結果對像中的一些數據。

這個對像在什麼階段/什麼時候被填充?正如我在重寫 OnActionExecuted 方法時所看到的那樣,它始終為空?

有任何想法嗎?

編輯:

例如在我的自定義過濾器中:

public override OnActionExecuted(HttpActionExecutedContext context)
{
   //context.Result.Content is always null

   base.OnActionExecuted(context);
}

最終在內容結果上使用了 ReadAsStringAsync。我試圖在實際請求完成之前訪問該屬性。

使用此函式在 web api 中獲取請求正文

private string GetBodyFromRequest(HttpActionExecutedContext context)
{
   string data;
   using (var stream = context.Request.Content.ReadAsStreamAsync().Result)
   {
       if (stream.CanSeek)
       {
           stream.Position = 0;
       }
       data = context.Request.Content.ReadAsStringAsync().Result;
   }
   return data;
}

引用自:https://stackoverflow.com/questions/10288623