使用 WCF Web API 在应用程序逻辑运行后但在返回给用户之前,我将如何更改响应的内容主体。目标是如果 suppressstatuscontent 为真,我们:
- 向内容正文添加状态码字段
- 将响应中的状态码更改为 200
我已经覆盖了 DelegatingChannel 并且在 SendAsnyc 中有一些看起来像这样的代码:
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(task =>
{
var response = task.Result;
if (CheckIfRequestHadSuppressStatusCode(request) == true)
{
string newResponse = (response.Content == null) ? "" : response.Content.ReadAsString();
newResponse = "<body>" +newResponse + "</body><statuscode>" + response.StatusCode + "</statuscode>";
response.StatusCode = HttpStatusCode.OK;
}
return response;
});
一个主要问题是这不能处理 BOTH和. 我觉得必须有一个更好的方法来解决这个问题,因为这感觉很hacky。xml
Json