2010-08-26 36 views
6

Tất cả những gì tôi cần chỉ là thông báo lỗi ở dạng văn bản thuần túy. Nhưng ASP.NET đang thực hiện một số báo cáo đầu ra HTML từ mọi lỗi.Làm cách nào để loại bỏ báo cáo lỗi HTML đó trong ASP.NET MVC?

Tôi có cuộc gọi jquery ajax và khi có lỗi xảy ra, tôi nhận được tất cả những gì crap về phía khách hàng.

Tôi đã tạo thuộc tính bộ lọc nhưng không trợ giúp.

public class ClientErrorHandler : FilterAttribute, IExceptionFilter 
{ 
    public void OnException(ExceptionContext filterContext) 
    { 
     var responce = filterContext.RequestContext.HttpContext.Response; 
     responce.Write(filterContext.Exception.Message); 
     responce.ContentType = MediaTypeNames.Text.Plain; 
     filterContext.ExceptionHandled = true; 
    } 
} 

EDIT

tôi nhìn thấy this

và tôi muốn xem chỉ là những gì là ở đây filterContext.Exception.Message

+0

Vui lòng bao gồm những gì bạn đang thấy ở phía khách hàng và những gì bạn muốn xem. –

+0

Ok Tôi đã chỉnh sửa bài đăng của mình. – user137348

+1

Is CustomErrors = "Tắt" trong web.config của bạn? Hãy thử chuyển CustomErrors = "On" hoặc CustomErrors = "RemoteOnly" trong web.config của bạn để ngăn chặn màn hình .NET màu vàng chết (đây là mã HTML bạn đang thấy). – Tommy

Trả lời

2

Có vẻ như tôi là lý do tại sao bạn không thể xử lý chính xác ngoại lệ trên là bởi vì nó xảy ra bên ngoài đường ống MVC. Nếu bạn nhìn vào dấu vết ngăn xếp trong mã bạn đăng không có tham chiếu đến mã System.Web.Mvc (việc kích hoạt bộ lọc ngoại lệ khi một ngoại lệ xảy ra được gọi là từ ControllerActionInvoker.InvokeAction).

Dấu vết ngăn xếp cho biết rằng ngoại lệ xảy ra trễ trong đường dẫn ASP.NET (OnEndRequest) và nó đến qua thành phần Autofac.

Để nắm bắt lỗi này, bạn sẽ phải đăng ký sự kiện Error của HttpApplication. Xem bài viết sau đây về cách tạo trình xử lý lỗi toàn cục: http://msdn.microsoft.com/en-us/library/994a1482.aspx. Trong trường hợp này, bạn có thể xử lý lỗi và chuyển hướng đến trang lỗi tùy chỉnh.

0

bạn cần phải trả lại một ContentResult

ContentResult result = new ContentResult(); 
result.Content = filterContext.Exception.Message; 
result.ContentType = MediaTypeNames.Text.Plain; 
filterContext.Result = result; 
filterContext.ExceptionHandled = true; 
+0

Không, kết quả tương tự .. – user137348

+0

Nó hoạt động cho tôi. Bạn có chắc chắn bộ lọc đang được sử dụng không? – Sruly

+0

Có, tôi đã bước qua nó .. Thuộc tính là trên phương pháp, không phải trên lớp. – user137348

0

Vì bạn đang sử dụng JQuery và WCF (theo chi tiết lỗi của bạn), bạn có thể xem bài viết này về cách xử lý lỗi dịch vụ một cách thanh lịch between jQuery and WCF - bạn có thể phải làm lại dịch vụ của mình nếu bạn có thể làm như vậy.

Các vấn đề liên quan