以Self Host 方式寄宿Web API , 如果访问不存在的URL时会返回一下错误,
现在我想自己处理这个错误 ,不用自动输出的信息。 请问该怎么处理? 非常感谢
之前回答过,http://q.cnblogs.com/q/77190/
选择了controller之后,框架会通过调用IHttpActionSelector.SelectAction方法来选择动作。这个方法就需要有controller要存在了。 controller就不存在怎么办呢?
@寧愿為你: 那就再自定义一个DefaultHttpControllerSelector,像下面这样:
public class NotFoundHttpControllerSelector : DefaultHttpControllerSelector
{
public override HttpControllerDescriptor SelectController(System.Net.Http.HttpRequestMessage request)
{
HttpControllerDescriptor descriptor = null;
try
{
descriptor = base.SelectController(request);
}
catch (HttpResponseException ex)
{
var statusCode = ex.Response.StatusCode;
if (statusCode != HttpStatusCode.NotFound && statusCode != HttpStatusCode.MethodNotAllowed) throw;
//这里可以转到错误处理的Action
}
return descriptor;
}
}
//在Global中Replace默认的Service
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerSelector), new NotFoundHttpControllerSelector());
或者,写成一个
全局异常处理应该能接到404异常试试.