C#使用抛出HTTPError的API不会反序列化错误

时间:2014-09-26 22:01:37

标签: c# winapi asp.net-web-api

提前感谢您的帮助:

我的情况是这样的: 我有一个API,当服务器出错时,返回System.Web.Http.HttpError的内容。

var errorResponse = new ErrorResponseFactory(ex, _showDebug);
System.Web.Http.HttpError error = errorResponse.Error;
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, error);

在进行单元测试时 - 直接调用API方法,我可以很好地提取HttpError。但是,当从另一台服务器调用API时,我得到的全部是Net.Http.StreamContent。我似乎无法将HTTPError用于消费。

 var response =  client.GetAsync(apiSignature).Result;


 // RETURN INSTANCE OF THE REQUESTED RESOURCE
 if (response.IsSuccessStatusCode)
 {
    return response.StatusCode == HttpStatusCode.NoContent 
    ? default(T)
    : response.Content.ReadAsAsync<T>().Result;
 }

  // DEAL WITH ERROR CASE
  var httpError = GetHttpError(response);

这将始终返回null;

 protected HttpError GetHttpError(HttpResponseMessage message)
 {
    HttpError err;
    message.TryGetContentValue(out err);
    return err;
 }

我可以完全控制两个代码基础,所以我没有嫁给HTTP错误,但我确实喜欢它提供的内容,并且如果可能的话我想使用它。

再次感谢,

(MS Visual Studio Web API应用程序,Window的Azure部署,但在本地测试)

SteveJ

0 个答案:

没有答案