如何通过CreateErrorResponse发送其他异常数据?

时间:2016-03-03 20:36:03

标签: c# asp.net .net owin

在ASP.NET中编程,并且您希望从异常创建HttpResponseMessage时,您可以使用:

var httpResponseMessage =
  Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception);

然而,在浏览器方面," responseText"最终只接收Exception对象的以下属性:ExceptionMessage,ExceptionType,Message和StackTrace?

如何发送其他数据?如果我创建自己的Exception类,或者我将数据添加到Exception.Data对象。

1 个答案:

答案 0 :(得分:1)

不是将异常直接传递给CreateErrorResponse,而是传入一个HttpError对象本身,通过传入异常来构造它。然后,您可以向返回给客户端的对象添加其他属性。

您上面的代码基本上与以下代码相同:

var httpError = new HttpError(exception, true);
var httpResponseMessage =
  Request.CreateErrorResponse(HttpStatusCode.InternalServerError, httpError);

您可以将Add方法调用到httpError到其他字段。例如,如果要添加存储在exception.Data属性中的所有键/值,则最终代码将如下所示:

var httpError = new HttpError(exception, true);
foreach (DictionaryEntry entry in exception.Data)
{
    httpError.Add(entry.Key.ToString(), entry.Value);
}
var httpResponseMessage =
  Request.CreateErrorResponse(HttpStatusCode.InternalServerError, httpError);