【发布时间】:2014-06-30 15:45:15
【问题描述】:
我尝试创建一个过滤器来修改内容。由于某种原因
var result = await actionContext.Request.Content.ReadAsStringAsync(); 不等待并返回空值。我确定有数据。直接在控制器和标题内部检查。是否有解决方法。也可以阻塞(HttpContent 似乎只有异步方法)。
public class AsyncAttribute : FilterAttribute, IActionFilter
{
public async Task<HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken,
Func<Task<HttpResponseMessage>> continuation)
{
await InternalActionExecuting(actionContext, cancellationToken);
if (actionContext.Response != null)
{
return actionContext.Response;
}
HttpActionExecutedContext executedContext;
try
{
var response = await continuation();
executedContext = new HttpActionExecutedContext(actionContext, null)
{
Response = response
};
}
catch (Exception exception)
{
executedContext = new HttpActionExecutedContext(actionContext, exception);
}
await InternalActionExecuted(executedContext, cancellationToken);
return executedContext.Response;
}
public virtual async Task InternalActionExecuting(HttpActionContext actionContext, CancellationToken cancellationToken)
{
//////////////////////////////////////////////////////////////////////////
var result = await actionContext.Request.Content.ReadAsStringAsync();// <------------------------------------------------------
//////////////////////////////////////////////////////////////////////////
}
public virtual async Task InternalActionExecuted(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
}
}
【问题讨论】:
-
你想在这门课上达到什么目的?
-
我喜欢为一些内容操作的东西设置一个过滤器属性。
-
“我有一个东西可以改变”。谢谢。你能帮我解释一下吗?
-
@MR.ABC 我相信一个示例 HTTP 请求会很好,因为我相信您的问题与此有关。
-
@Matías Fidemraizer 我得走了。我稍后会这样做。使用 json content-type 也许有人会尝试过。
标签: c# asp.net-web-api async-await