在ASP.NET中编程,并且您希望从异常创建HttpResponseMessage时,您可以使用:
var httpResponseMessage =
Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception);
然而,在浏览器方面," responseText"最终只接收Exception对象的以下属性:ExceptionMessage,ExceptionType,Message和StackTrace?
如何发送其他数据?如果我创建自己的Exception类,或者我将数据添加到Exception.Data对象。
答案 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);