长Web API路由属性除以零错误

问题描述 投票:0回答:2

我正在创建一个Android应用程序,我使用web api从服务器发送和接收json数据。我的一个查询在路由属性中包含最多30个参数,如下所示。结果我得到一个尝试除以零错误。错误行是GlobalConfiguration.Configure(AddressOf Register)我在web.condfig文件中增加了maxURLlength,maxQueryStringLength和maxRequestLength,但没有任何效果。

问题:导致此问题的原因是什么?具有特定路由属性的每个out操作都在控制器中工作。

试图除以零。描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.DivideByZeroException:尝试除以零。

<Route("api/dtl/GetResults/{1}/{30})>
android xamarin asp.net-web-api
2个回答
0
投票

所以我找到了我正在寻找的答案。不允许长路由,这就是为什么我得到Can not除零错误。我做错了。我需要做的就是以正确的形式正确配置我的路线

<Route("api/DTL/ActionName")>

代替

<Route("api/dtl/ActionName/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{}/{Zip}")>

然后我可以通过这样的URL来调用此操作

http://localhost:17895/api/dtl/PostCreateMember?Username=jason&Gender=Male等等

因此,只要我已定义模型接受它,url就可以只要它想要。您可以在https://blog.scottlogic.com/2016/01/20/restful-api-with-aspnet50.html了解更多信息


0
投票

在POST方法中使用URL参数通常不会出现问题,但是当您有太多可能会产生问题时,就像您已经看到的那样。

更好的想法是在您的请求正文中传递您需要的所有内容。您可以创建一个包含所需内容的对象,将其放入请求正文中,在API中使用模型表示它,然后您的POST请求变得更加容易和简单。

还有一件事,URL参数需要进行URL编码,因为您的数据可能包含特殊字符(如&符号),这样的内容可能会完全搞砸您的URL,并且您可能会开始看到404错误,因为您的路由不再匹配。

© www.soinside.com 2019 - 2024. All rights reserved.