3

我的路线看起来像:

config.Routes.MapHttpRoute(
     name: "DefaultApi",
     routeTemplate: "api/{controller}/{id}/{uri}",
     defaults: new { id = RouteParameter.Optional, uri = RouterParameter.Optional }
);

我有一个 Base64 编码的 uri 来代替 {uri} 参数。它没有非法字符(我已正确格式化并检查以确保)。但是,它的长度约为 300-400 个字符。

当我使用 long base64 参数向该地址发送 DELETE 请求时,我收到 400 BAD STATUS, INVALID URL 响应。缩短参数时,它起作用。我怀疑存在最大路径问题?

使用查询字符串代替路径参数是可行的,但我宁愿继续使用 RESTful 方法。我可以在我的 Web API 项目上更改配置设置以允许更长的基于路径的参数吗?

这有效:

http://localhost:99999/api/reg/10?uri=<long_base64_parameter>

这不起作用:

http://localhost:99999/api/reg/10/<long_base64_parameter>
4

1 回答 1

1

看起来这些是相关的:

IIS 7 中的请求 URL 无效

ASP.NET MVC,Url 路由:最大路径 (URL) 长度

另见:

http://social.msdn.microsoft.com/Forums/nl/netfxnetcom/thread/723e6bfd-cab7-417b-b487-67f1dcfa524f

看起来默认情况下可能存在路径段限制,但有几种解决方法(url 重写、注册表更改等)

于 2012-12-09T04:16:23.237 回答