asp.net web api如何获取参数级异常?

问题描述

比如有一个Get方法,publicvoidGet(intid){}调用时传入"a",就会抛出异常,因为我要处理异常信息,返回给客户端自定义格式的错误,我想问下这种异常在哪里获取?

解决方案

解决方案二:
protectedoverridevoidOnException(ExceptionContextfilterContext){if(filterContext.ExceptionisSystem.ArgumentException){filterContext.ExceptionHandled=true;//自定义...}else{base.OnException(filterContext);}}

解决方案三:
引用楼主ZZtiWater的回复:

比如有一个Get方法,publicvoidGet(intid){}调用时传入"a",就会抛出异常,因为我要处理异常信息,返回给客户端自定义格式的错误,我想问下这种异常在哪里获取?

你这个是重写Controller吧?我现在做的webapi,我是这样写的,不过不起作用,只对Action内部有效publicclassApiExceptionFilterAttribute:ExceptionFilterAttribute{publicoverridevoidOnException(HttpActionExecutedContextcontext){...elseif(context.ExceptionisArgumentException){context.Response=newHttpResponseMessage{StatusCode=HttpStatusCode.InternalServerError};varexception=(ArgumentException)context.Exception;context.Response.Content=newStringContent(ErrorCode.ParamError.ToJson(context.Exception.Message+context.Exception));}...}

解决方案四:
我去,引用错了!不好意思!
解决方案五:
就是用异常过滤器,貌似解决了?
解决方案六:
引用3楼ZZtiWater的回复:

我去,引用错了!不好意思!

没解决,我是说我的回复引用错了!

时间: 2024-10-26 09:52:04

asp.net web api如何获取参数级异常?的相关文章

asp.net web api如何获取调用Action之前的异常?

问题描述 比如404.content-type异常.参数转换异常等等. 解决方案 本帖最后由 ZZtiWater 于 2014-08-04 20:56:43 编辑解决方案二:actionfilter解决方案三:引用1楼liqiucu的回复: actionfilter 哥,能不能再详细一点,ActionFilter和ExceptionFilter我都没试出来!

ASP.NET Web API Selfhost宿主环境中管道、路由

前言 前面的几个篇幅对Web API中的路由和管道进行了简单的介绍并没有详细的去说明一些什么,然而ASP.NET Web API这个框架由于宿主环境的不同在不同的宿主环境中管道中的实现机制和路由的处理方式有着很大的不同,所以我会将对应不同的宿主环境来分别的做出简单的讲解.  ASP.NET Web API路由.管道     ASP.NET Web API 开篇介绍示例     ASP.NET Web API 路由对象介绍     ASP.NET Web API 管道模型     ASP.NET

ASP.NET Web API标准的“管道式”设计

  ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHandler的处理.在另一端,目标HttpController被激活,Action方法被执行,响应消息随之被生成.响应消息逆向流入此管道,同样会经过逐个HttpMessageHandler的处理.这是一个独立于寄宿环境的抽象管道,如何实现对请求的监听与接收,以及将接收的请求传入消息处理管道进行处理并

Self Host模式下的ASP. NET Web API是如何进行请求的监听与处理的?

构成ASP.NET Web API核心框架的消息处理管道既不关心请求消息来源于何处,也不需要考虑响应消息归于何方.当我们采用Web Host模式将一个ASP.NET应用作为目标Web API的宿主时,实际上是由ASP.NET管道解决了这两个问题.具体来说,ASP.NET自身的URL路由系统借助于HttpControllerHandler这个自定义的HttpHandler实现了ASP.NET管道和ASP.NET Web API管道之间的"连通",但是在Self Host寄宿模式下,请求的

通过扩展让ASP.NET Web API支持JSONP

同源策略(Same Origin Policy)的存在导致了"源"自A的脚本只能操作"同源"页面的DOM,"跨源"操作来源于B的页面将会被拒绝.同源策略以及跨域资源共享在大部分情况下针对的是Ajax请求.同源策略主要限制了通过XMLHttpRequest实现的Ajax请求,如果请求的是一个"异源"地址,浏览器将不允许读取返回的内容.JSONP是一种常用的解决跨域资源共享的解决方案,现在我们利用ASP.NET Web API自身

Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)

原文:Asp.Net Web API 2第十七课--Creating an OData Endpoint in ASP.NET Web API 2(OData终结点) 前言 很久没更新博客了,加上刚过年,现在准备重新开战,继续自己的学习之路.本文已同步到Web API2系列文章中http://www.cnblogs.com/aehyok/p/3446289.html. 示例项目下载地址http://pan.baidu.com/s/1sjEWVPN 开放数据协议(OData)是Web数据访问协议.

通过扩展让ASP.NET Web API支持W3C的CORS规范

让ASP.NET Web API支持JSONP和W3C的CORS规范是解决"跨域资源共享"的两种途径,在<通过扩展让ASP.NET Web API支持JSONP>中我们实现了前者,并且在<W3C的CORS Specification>一文中我们对W3C的CORS规范进行了详细介绍,现在我们通过一个具体的实例来演示如何利用ASP.NET Web API具有的扩展点来实现针对CORS的支持. 目录 一.ActionFilter OR HttpMessageHandl

ASP.NET Web API路由系统:Web Host下的URL路由

ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中.如果采用Web Host的方式将定义Web API寄宿于一个Web应用之中,其实最终的URL路由还是通过ASP.NET本身的路由系统完成的,那么两个路由系统之间是如何衔接在一起的呢?.[本文已经同步到<How ASP.NET Web API Works?>] 目录 一.Hoste

ASP.NET Web API路由系统:路由系统的几个核心类型

虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分(定义在程序集System.Web.Http.dll中)已经移除了对System.Web.dll程序集的依赖,实现在ASP.NET Web API框架中的URL路由系统亦是如此.也就是说,ASP.NET Web API核心框架的URL路由系统与ASP.NET本身的路由系统是相对独立的.但是当我们采用基于Web Host的方式(定义在程序集System.Web.H