ASPWebAPI中指定无效参数时返回错误我希望在使用Anerrorisreturnedforunrecognizedarguments时使用它。例如:/api/Events应该列出一系列事件/api/Events?startTime={{startTime}}应该返回在特定时间开始的事件列表/api/Events?someRandomInvalidParameter={{something}}应该使用Nice配置方式返回错误?如果没有,我如何获得一个参数列表来检查自己。您可以创建一个ActionFilter来自动执行此操作:varqueryString=actionContext.Request.GetQuery(Nameq)=actionContext.Request.GetQuery>q.Key);varinvalidParams=queryString.Where(k=>!arguments.Contains(k));if(invalidParams.Any()){actionContext.Response=actionContext.Request.CreateResponse(HttpStatusCode.BadRequest,new{message="无效查询字符串参数",parameters=invalidParams});}}}此过滤器将拒绝任何其查询字符串参数与方法签名不匹配的请求。你可以这样使用它:[InvalidQueryStringRejector]publicIHttpActionResultGet(stringvalue){returnOk(value);}或通过在HttpConfiguration对象中注册来应用于任何操作:config.Filters.Add(newInvalidQueryStringRejectorAttribute());尝试像这样的强类型操作publicstringGet(){return"I'maliveempty";}publicstringGet([FromUri]intid){return"我还活着";所以一个正常的电话会让我恢复活力,或者我还活着http://localhost:1578/api/alive?id=1//ORhttp://localhost:1578/api/alive但是如果你试着打电话它像这样http://localhost:1578/api/alive?blablabla=1你会得到这个错误请求的资源不支持http方法'GET'。我认为你应该覆盖方法示例:[Route("/app/Events/{startTime})"]publicApiResponseGet(stringstartTime){}[Route("/app/Events/{startTime}/{someRandomeInvalid}")]publicApiResponseGet(stringstartTime,stringsomeRandomeInvalid){}不要设置明确的参数名称。应该按参数顺序管理/检查以上是C#学习教程:在ASPWebAPI中指定无效参数时返回错误分享的全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
