当前位置: 首页 > 编程语言 > C#

查询参数路由约束分享

时间:2023-04-10 21:40:43 C#

查询参数路由约束刚开始使用ASP.NETWebAPI2.1,遇到一个限制。使用属性路由,我可以做这样的事情:[Route("item/{id:int}")]publicIHttpActionResultGetItem(intid){...}URL/item/5将路由到这个动作,但是由于到{id:int},URL/item/abc不会。我已经尝试更改我的URL,以便id参数位于查询字符串及其约束中,尽管文档中从未提及或演示查询参数的路径约束。[Route("item?{id:int}")]publicIHttpActionResultGetItem(intid){...}如果我现在尝试运行,我会在Application_Start的Configure方法调用上收到错误消息。protectedvoidApplication_Start(){GlobalConfiguration.Configure(WebApiConfig.Register);消息如下。用户代码未处理ArgumentException路径模板不能以“/”或“~”字符开头,也不能包含“?”'特点。有两件事困扰着我。首先,MSDN上记录路由前缀的部分明确指出在路径模板的开头放置一个~字符是完全可以接受的。我试过了,它按记录工作。其次,如果没有,我如何对查询参数设置路由约束?考虑以下情况,移除路径约束。[Route("item")]publicIHttpActionResultGetItem(intid){...}URL/item/5将路由到此操作,id设置为5-但URL/item/abcid设置为0。是不是不能对查询参数设置路由约束?根据http://attributerouting.net/#asp-net-web-api(?),这是不可能的:“注意!由于WebAPIWebHost框架的集成问题,以下功能将不起作用:...?)请注意,这个答案是为以前版本的WebAPI编写的,其中属性路由是使用单独的AttributeRouting.WebApiNuGet包完成的。属性路由已被合并到WebAPI核心中。不过,似乎是出于-开箱即用支持QueryStringParameterConstraints以上就是C#学习教程:QueryParameterRoutingConstraints的全部内容,如有侵权,请点击右边联系管理员删除,如有转载,请谅解注明出处: