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

C# 如何通过CreateErrorResponse发送其他异常数据?,c#,asp.net,.net,owin,C#,Asp.net,.net,Owin,在ASP.NET中编程时,如果希望从异常创建HttpResponseMessage,可以使用: var httpResponseMessage = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception); 但是,在浏览器端,“responseText”只接收异常对象的以下属性:ExceptionMessage、ExceptionType、Message和StackTrace 如何发送附加数据?如果

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

var httpResponseMessage =
  Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exception);
但是,在浏览器端,“responseText”只接收异常对象的以下属性:ExceptionMessage、ExceptionType、Message和StackTrace


如何发送附加数据?如果我创建自己的异常类,或者如果我将数据添加到Exception.data对象中。

不是将异常直接传递到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);

你现在在问自己吗?是的,T.S.当你问StackOverflow问题时,你可以选择“回答你自己的问题”。这是值得鼓励的。请看下面的解释: