我通过传入序列化的JSON DTO来调用webapi上的帖子操作。
我还有一个自定义媒体类型格式化程序来加密结果数据。但是在WriteToStreamAsync方法中,如何获取已发布的参数?
自定义媒体类型格式化程序类
public class JsonFormatter : JsonMediaTypeFormatter
{
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
{
var taskSource = new TaskCompletionSource<object>();
try
{
if (value != null)
{
//How to get posted parameters?
}
}
catch (Exception e)
{
taskSource.SetException(e);
}
return taskSource.Task;
}
}
}
答案 0 :(得分:0)
我设法通过HttpContext.Current.Request.InputStream
获取它答案 1 :(得分:0)
在这种情况下,通常无法使用HttpContext.Current
,因为它不一定总是可用于async
通话。
相反,请执行以下操作:
public class JsonFormatter : JsonMediaTypeFormatter
{
private readonly HttpRequestMessage request;
public JsonFormatter() { }
public JsonFormatter(HttpRequestMessage request)
{
this.request = request;
}
public override MediaTypeFormatter GetPerRequestFormatterInstance(Type type, HttpRequestMessage request, MediaTypeHeaderValue mediaType)
{
return new JsonFormatter(request);
}
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
{
// logic referencing this.request
}
}