【问题标题】:web api returns 404web api 返回 404
【发布时间】:2014-05-07 20:44:10
【问题描述】:

我目前是第一次使用 asp.net web api,并且在尝试发布到特定方法时遇到404s 的问题。

api 工作正常,但是当其中一个参数达到一定长度时,会返回一个404

有问题的参数只有大约 2000 个字符的长度。

这是 api 方法的签名:

public Boolean Add(String Source, Int32 CreatedByID, String CreatedBy, 
            String Header, String Body, Boolean IsLive, Boolean IsNotification)

任何想法我做错了什么?如果这有什么不同,我会用 angular 调用我的 api。

【问题讨论】:

  • 如果做一个帖子,那么为什么不使用 Add([FormData] YourObject yourObject) 并将他的帖子数据序列化到该对象,而不是传递查询字符串参数。听起来你并没有真正使用 httppost
  • 嗨蒂姆,我在角度使用 $http 服务并将 POST 指定为方法。它很奇怪,因为它工作正常,但只要其中一个参数达到一定长度,它就会返回 404。

标签: c# asp.net


【解决方案1】:

在某些浏览器中,url 的最大长度为 2000 个字符,因此请尝试使用更少的参数,看看是否有帮助。

【讨论】:

  • 你有那个来源吗?我知道你可能是对的,但很高兴在答案中看到它。
  • 嗨,Christian,我确实认为可能是这种情况,但不认为它会返回 404
【解决方案2】:

GREAT 解释和 CREDIT 在这里:What is the maximum length of a URL in different browsers?

一些关键点,以防其他人迷路......我已经逐字保留了摘录”,以免假装这是我自己的工作!

简答 - 事实上限制为 2000 个字符

如果您将 URL 保持在 2000 个字符以下,它们几乎可以在客户端和服务器软件的任何组合中工作。

更长的答案 - 首先是标准......

RFC 2616(超文本传输​​协议 HTTP/1.1)第 3.2.1 节说

HTTP 协议没有放置 长度的任何先验限制
一个 URI。服务器必须能够处理 他们服务的任何资源的 URI, 并且应该能够处理 URI 如果他们提供无限长度 可以生成的基于 GET 的表单 此类 URI。服务器应该返回 414(请求 URI 太长)状态,如果 URI 比服务器可以长 句柄(参见第 10.4.15 节)。

注意:服务器应该小心 关于取决于 URI 长度 超过 255 字节,因为一些较旧的客户端或代理 实现可能无法正确支持这些长度。

Internet Explorer 的限制...

IE8's maximum URL length is 2083 chars,好像是IE9 has a similar limit

我测试过 IE10,地址栏只能接受 2083 个字符。您可以单击比此更长的 URL,但地址栏仍将仅显示此链接的 2083 个字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多