我找到了离我的问题不远的帖子,但仍然无法解决这个问题,所以请不要说它是重复的并尝试提供帮助。
我在 Azure 上托管了一个 Web 服务。
当调用具有大量(不是那么大)数据的特定方法时,我得到一个一般错误:“底层连接已关闭:接收时发生意外错误。”
我知道这是与大小相关的,因为请求中有一个大字符串,当它大约 4.5 MB 时一切正常,当请求大约 5 MB 或更高时,请求失败并出现一般错误。
据我所知,web.config 的大小最大:
<bindings>
<webHttpBinding>
<binding name="myWebHttpBinding" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" receiveTimeout="00:05:00" closeTimeout="00:05:00" openTimeout="00:05:00" sendTimeout="00:05:00" >
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>
这是方法的声明方式:
[WebInvoke(RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, Method = "POST", UriTemplate = "/PublishDataItems")]
ServerRespones PublishDataItems(DataItemRequest Request);
这就是我从客户端调用该方法的方式:
WebClient proxy = new WebClient();
proxy.Headers["Content-type"] = "application/json";
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DataItemRequest));
ser.WriteObject(ms, myRequest);
byte[] data = proxy.UploadData(URL + "PublishDataItems", "POST", ms.ToArray());
MemoryStream stream = new MemoryStream(data);
DataContractJsonSerializer obj = new DataContractJsonSerializer(typeof(ServerRespones));
var result = obj.ReadObject(stream) as ServerRespones;