0
Web API方法中的一個參數意外爲空,因此我想檢查該請求。爲了支持這個,我寫了一個ActionFilterAttribute
並實現了OnActionExecuting方法。試圖根據下面的代碼檢索內容會返回一個空字符串,但ContentLength表示內容爲345字節,內容類型爲JSON(如預期的那樣)。ActionFilter中的嗅探請求
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http.Controllers;
using System.Web.Http.Filters;
namespace Website.ActionFilters
{
public class ActionFilterSniffAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
Task<string> task = actionContext.Request.Content.ReadAsStringAsync();
while (task.Status != TaskStatus.RanToCompletion)
Thread.Sleep(10);
Debug.WriteLine(task.Result);
}
}
}
獲取HTTP請求字符串的正確方法是什麼?在服務器上安裝Fiddler並不是我想做的事情。
可能重複http://stackoverflow.com/questions/21351617/web-api-request-content-is-empty-in-action-filter。問題可能在於內容已被讀取以提供操作參數,並且僅向前讀取字符串。 – Bill
檢查了下面的答案。作品是一種享受,所以對於另一個問題的回答絕對是錯誤的,只有這個流纔是正確的。 –