【发布时间】:2013-12-25 05:36:45
【问题描述】:
场景
我有一个 ASP.NET Web API,它从我的代码隐藏中返回一个 JSON 对象。用于调用此 API 的 URL 提供了一个分隔的标签 ID 列表(由加号分隔)。 JSON 对象然后返回附加了此标签的帖子。
在我尝试选择所有可能的标签(API 上的压力测试)之前,一切都很好。好吧,当我这样做时,我得到了400 (Bad Request) 响应。如果删除一些参数,它会再次工作。 URL 长度在中断之前大约是 270 个字符,但它似乎有所不同,我不确定错误是由 URL 的长度引起的,还是参数过多。
问题
在构建 MVC 4 Web API 时,我在 web.config 中是否有一个 XML 标记指定了最大 URL 长度?或者可能是最大数量的参数? Global.asax 文件中是否有我遗漏的内容?
关于 API,它是一个 MVC 4 Web API,但正在 Visual Studio 2010 的 WebForms 项目中使用。这意味着存在一些细微的差异,但即使有人能指出我正确的方向,我'我确定我可以解决这个问题。在这一点上,我什至不知道要谷歌什么:(
代码
这是我项目中的一些代码,以防万一……
Global.asax (“帖子”API 是我遇到的问题。我重命名了其他 API)
<%@ Application Language="VB" %>
<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Http" %>
<script runat="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
RouteTable.Routes.MapHttpRoute(name:="OTHERAPI01", routeTemplate:="api/{controller}/{email}", defaults:=New With {.email = System.Web.Http.RouteParameter.Optional})
RouteTable.Routes.MapHttpRoute(name:="OTHERAPI02", routeTemplate:="api/{controller}/{action}/{id}", defaults:=New With {.body = System.Web.Http.RouteParameter.Optional, .id = System.Web.Http.RouteParameter.Optional})
RouteTable.Routes.MapHttpRoute(name:="OTHERAPI03", routeTemplate:="jjnotey/{controller}/{action}")
RouteTable.Routes.MapHttpRoute(name:="Posts", routeTemplate:="postsApi/{controller}/{action}/{category}/{pageNumber}/{searchBy}/{searchValue}", _
defaults:=New With {.category = "tb", .pageNumber = 1, .searchBy = System.Web.Http.RouteParameter.Optional, _
.searchValue = System.Web.Http.RouteParameter.Optional})
End Sub
</script>
API 函数 (只有名称和参数。内容不相关,因为代码执行甚至没有到达此函数。)
Public Function GetPosts_NEW(ByVal category As String, ByVal pageNumber As Integer, _
Optional ByVal searchBy As String = "", Optional ByVal searchValue As String = "") As String
GET 错误 (这是 Google 控制台为我显示的内容)
GET http://localhost:49816/myDomainName/postsApi/Posts/GetPosts/tb/1/DepartmentId/1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100+101+102+103+104 400 (Bad Request)
【问题讨论】:
-
@EdSF 是的,谢谢。我尝试了其中的几个答案,其中一个成功了。阅读我的回答,了解我采取的具体步骤。
标签: asp.net json vb.net asp.net-mvc-4 asp.net-web-api