使用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;
        }
    }

请帮帮我。

谢谢

使用WCF服务和Base64Request上传图像时出现400错误

尝试将maxBufferSize, maxArrayLength和maxReceiveMessageSize设置为最大请求有效负载大小的两倍(用于测试)。将其精确设置为64k不会考虑序列化和协议开销,而且太小了。

我们在项目中也面临着同样的问题。我假设你在调试应用程序时遇到了这个问题。似乎DevServer不支持流绑定。如果你已经尝试增加配额和缓冲区,但它没有解决问题,尝试部署你的应用在IIS中,对我们来说,它在IIS环境下工作得很好。