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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长Web API路由属性除以零错误相关的知识,希望对你有一定的参考价值。

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

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

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

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

<Route("api/dtl/GetResults/{1}/{30})>
答案

所以我找到了我正在寻找的答案。不允许长路由,这就是为什么我得到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了解更多信息

另一答案

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

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

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

以上是关于长Web API路由属性除以零错误的主要内容,如果未能解决你的问题,请参考以下文章

web api - 消息处理程序属性路由

在此代码中,对于 while 循环内的条件,错误显示“除以零”。为啥会这样?

如何避免 SQL 中的“除以零”错误?

除以零 - c 编程

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

C++:捕获除以零错误