2017-05-19 30 views
0

我正在編寫自定義ActionFilterAttribute,以便在請求觸及.Net Core Web API中的操作之前處理某些業務邏輯。 (Core v1.1) 處理程序被OnActionExecuting成功命中,但我無法提取以請求主體發送的JSON格式發送的數據。我試過了很多方法,比如讀取ActionExecutingContext流體(空),訪問Form屬性(但因爲它是json,它不起作用),還有一些其他的解決方案,但沒有運氣。從ActionFilterAttribute中的.NET Core Web API的請求正文獲取JSON數據

這是我的ActionFilter的代碼,它是空的,因爲這裏的問題基本上是需要提取其數據,所以進一步的代碼將是不相關的。

public class AccountRestrictionAttribute : ActionFilterAttribute 
{ 
    public override async void OnActionExecuting(ActionExecutingContext context) 
    {  
    } 
} 

回答

0

回答歸功於rynowak,我在這裏找到https://github.com/aspnet/Mvc/issues/5260

ModelBinding所以如果你有表單數據或[FromBody]參數,我們已經讀過它之前的動作過濾器運行。

是的,如果你在一個動作過濾器中,那麼context.ActionArguments將包含我們創建的所有模型對象。所以如果你有:

public IActionResult Edit(int id, [FromBody] Widget widget) { } 

然後context.ActionArguments [「widget」]將返回Widget對象。如果你試圖以通用的方式做到這一點,看看context.ActionDescriptor.Parameters - 這將包含所有的參數定義和元數據。

+0

是的,我之前發現了相同的鏈接,但是無論如何感謝伴侶。 – user2761172