我正在尝试使用webservices和Base64string上传图像。
但是每次我尝试上传图片时,都会给我一个BAD REQUEST(400)错误。
我搜索了很多关于此的信息,它说错误是由于请求中传递了大量数据。
所以我尝试从web.config增加数据长度,但添加了这个。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<!-- buffer: 64KB; max size: 64MB -->
<binding name="FileTransferServicesBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00"
transferMode="Streamed" messageEncoding="Mtom" maxBufferSize="65536" maxReceivedMessageSize="67108864">
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
但它仍然给我错误。
这是我的功能。
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Xml)]
string AddAlbum(string imgstring)
我正在调用此函数如下: -
public string PostRemoteJSON(string strurl, string param)
{
try
{
strurl = "http://mydomain.com/EventService.svc/AddAlbum";
param = "{\"imgstring\":\"BASE64STRINGCONTENT\"}";
WebRequest myWebRequest;
Stream myRequestStream;
StreamWriter myStreamWriter;
WebResponse myWebResponse;
myWebRequest = WebRequest.Create(strurl);
myWebRequest.Method = "POST";
myWebRequest.Timeout = 1000000;
myWebRequest.ContentType = "application/json";
myWebRequest.ContentLength = param.Length;
myRequestStream = myWebRequest.GetRequestStream();
myStreamWriter = new StreamWriter(myRequestStream);
myRequestStream = myWebRequest.GetRequestStream();
myStreamWriter.Write(param);
myStreamWriter.Flush();
myStreamWriter.Close();
myRequestStream.Close();
myWebResponse = myWebRequest.GetResponse();
StreamReader reader = new StreamReader(myWebResponse.GetResponseStream());
return reader.ReadToEnd();
}
catch (Exception ex)
{
return ex.Message;
}
}
请帮帮我。
由于
答案 0 :(得分:2)
尝试将maxBufferSize,maxArrayLength和maxReceiveMessageSize all设置为值double(用于测试)最大请求有效负载的大小。将其精确地设置为64k不会导致序列化和协议开销,并且太小。
答案 1 :(得分:1)
我们在our project面临同样的问题。我假设您在调试应用时遇到此问题。似乎DevServer不支持流式绑定。如果您已经尝试增加配额和缓冲区,但它没有解决问题,请尝试在IIS中部署您的应用程序,对我们来说,它在IIS环境中都能正常工作。