Tôi có dự án ASP WebAPI. Tôi đang cố gắng để thiết lập một xử lý ngoại lệ toàn cầu trên basecontroller của tôi. Vì vậy, tôi đã tạo một ExceptionFilterAttribute
như vậy.Xử lý ngoại lệ toàn cầu của WebAPI
using System.Web.Http.Filters;
public class MyExceptionFilterAttribute : ExceptionFilterAttribute
{
protected static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
var exception = actionExecutedContext.Exception;
log.Fatal(exception);
base.OnException(actionExecutedContext);
}
}
Sau đó, tôi cũng đã đăng ký nó trong /App_Start/WebApiConfig.cs
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// ...
// Setup Filters
config.Filters.Add(new MyExceptionFilterAttribute());
}
}
Khi tôi thêm các thuộc tính để điều khiển của tôi (hoặc cơ sở-controller), không có gì được ghi lại. Tôi đang làm gì sai?
Chỉnh sửa: điều khiển của tôi ném ngoại lệ:
[HttpGet]
public string Hello(string name)
{
if (name.Equals("error", StringComparison.OrdinalIgnoreCase))
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
else
{
return name;
}
}
loại ngoại lệ nào bạn bỏ qua, có số trường hợp bộ lọc không xử lý được. –