我所需要的只是纯文本格式的错误消息。但是ASP.NET会从每个错误中输出一些超文本标记语言的报告。
我有一个jquery ajax调用,当抛出一个错误时,我会把所有这些垃圾处理到客户端。
我已经创建了一个筛选器属性,但没有帮助。
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;
}
}编辑
我在和this约会
我想看看这里是什么,filterContext.Exception.Message
发布于 2010-08-31 10:01:54
在我看来,你不能正确处理异常的原因是因为它发生在MVC管道之外。如果您查看您发布的代码中的堆栈跟踪,就会发现没有对System.Web.Mvc代码的引用(异常发生时触发异常过滤器是从ControllerActionInvoker.InvokeAction调用的)。
堆栈跟踪表明异常在ASP.NET管道(OnEndRequest)中较晚发生,并且它是通过Autofac组件传入的。
要捕获此错误,您必须订阅HttpApplication的Error事件。请参阅下面关于创建全局错误处理程序的文章:http://msdn.microsoft.com/en-us/library/994a1482.aspx。在这种情况下,您可以处理错误并重定向到自定义错误页面。
发布于 2010-08-26 20:29:23
您需要返回一个ContentResult
ContentResult result = new ContentResult();
result.Content = filterContext.Exception.Message;
result.ContentType = MediaTypeNames.Text.Plain;
filterContext.Result = result;
filterContext.ExceptionHandled = true; 发布于 2010-08-31 10:18:26
由于您正在使用JQuery和WCF (根据您的错误的详细信息),您可能想看看这篇关于如何优雅地between jQuery and WCF处理服务错误的文章-如果您能够做到这一点,您可能需要重新处理您的服务。
https://stackoverflow.com/questions/3574967
复制相似问题