是否有改变的错误信息,如网络API的默认行为的一种方式:asp.net的Web API - 默认错误消息
GET /trips/abc
会回应(转述):
HTTP 500 Bad Request
{
"Message": "The request is invalid.",
"MessageDetail": "The parameters dictionary contains a null entry for parameter 'tripId' of non-nullable type 'System.Guid' for method 'System.Net.Http.HttpResponseMessage GetTrip(System.Guid)' in 'Controllers.TripController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
我我想避免发布关于我的代码的这个相当详细的信息,取而代之的是类似于:
HTTP 500 Bad Request
{
error: true,
error_message: "invalid parameter"
}
我可以在UserController中执行此操作,但代码执行甚至没有达到那么远。
编辑:
我发现从输出除去详细的错误消息的一种方式,使用这行代码在Global.asax.cs中:
GlobalConfiguration.Configuration.IncludeErrorDetailPolicy =
IncludeErrorDetailPolicy.LocalOnly;
这产生类似这样的消息:
{
"Message": "The request is invalid."
}
这是更好的,但是不正是我想要的 - 我们已经指定了一些数字错误代码,它映射到详细的错误信息的客户端。我想只输出相应的错误代码(即我能之前输出选择,preferrably通过看发生什么样的例外),例如:
{ error: true, error_code: 51 }
完美,谢谢! – doque
如果你想知道在哪里添加它,可以通过调用'config.MessageHandlers.Add(new YourDelegatingHandler())'来添加它,通常在启动逻辑的'Register(HttpConfiguration config)'方法中。 –
不应该在构建响应内容之后替换响应内容,我们是不是应该首先定制负责构建响应的类/服务? – dgaspar