我使用HttpClient
库创建了C#客户端。
我使用BASE64编码数据来上传文件(通过POST)。 有时,我遇到错误(可能是因为内容长度限制),即使数据不是太大(大约500kB)。
我将其更改为MultipartFormData
POST,正如我们所料,它运行正常,超过1MB。
Web服务器是否以简单的Form POST和Multipart POST方式处理会话?
请注意,我使用的Web服务是Azure WebSites。
答案 0 :(得分:2)
这不是Azure或IIS中的任何限制。这就是HTTP协议的设计方式!详细了解Form
元素here的不同类型的内容类型。
来自规范:
application / x-www-form-urlencoded
这是默认内容类型。使用此内容提交的表单 类型必须编码如下:
转义控件名称和值。空格字符被替换为
+', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by
%HH',百分号和两个十六进制数字代表 字符的ASCII码。换行符表示为“CR LF” 对(即'%0D%0A')....
现在为Multipart:
multipart / form-data
内容类型“application / x-www-form-urlencoded”效率低下 用于发送大量二进制数据或包含的文本 非ASCII字符。内容类型“multipart / form-data”应该是 用于提交包含文件,非ASCII数据和表单的表单 二进制数据。
内容“multipart / form-data”遵循所有multipart的规则 [RFC2045]中概述的MIME数据流。的定义 “multipart / form-data”可在[IANA]注册表中找到。
因此,要上传文件,您应始终使用multipart/form-data
。不仅仅是Azure,不仅仅是IIS,还有任何托管服务提供商和任何实现HTTP协议标准的 Web服务器。