使用WCF服务和Base64Request上传图像时出现400错误
本文关键字:错误 图像 服务 WCF Base64Request 使用 | 更新日期: 2023-09-27 18:04:58
我正在尝试使用webservices和Base64string上传图像。
但是每次我试图上传图像时,它都会给我一个BAD REQUEST(400)错误。
我搜索了很多关于这个,它说错误是由于在请求中传递了大量的数据。
所以我尝试增加来自web的数据长度。
<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;
}
}
请帮帮我。
谢谢
尝试将maxBufferSize, maxArrayLength和maxReceiveMessageSize设置为最大请求有效负载大小的两倍(用于测试)。将其精确设置为64k不会考虑序列化和协议开销,而且太小了。
我们在项目中也面临着同样的问题。我假设你在调试应用程序时遇到了这个问题。似乎DevServer不支持流绑定。如果你已经尝试增加配额和缓冲区,但它没有解决问题,尝试部署你的应用在IIS中,对我们来说,它在IIS环境下工作得很好。