Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用WCF服务和Base64Request上载映像时出错400_C#_.net_Wcf_Json - Fatal编程技术网

C# 使用WCF服务和Base64Request上载映像时出错400

C# 使用WCF服务和Base64Request上载映像时出错400,c#,.net,wcf,json,C#,.net,Wcf,Json,我正在尝试使用webservices和Base64string上传图像 但每次我试图上传图像时,它都会给我错误的请求(400) 我在谷歌上搜索了很多,它说错误是由于请求中传递了大量数据造成的 所以我尝试从web.config增加数据长度,但添加了这个 <system.serviceModel> <bindings> <basicHttpBinding> <!-- buffer: 64KB; max size: 64M

我正在尝试使用webservices和Base64string上传图像

但每次我试图上传图像时,它都会给我错误的请求(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>
我按如下方式调用此函数:-

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环境中一切正常。

我没有调试该项目,实际上我已上载该项目并使用其他项目进行测试。确定。然后需要检查绑定配置。检查readerQuotas等。检查这两个链接:以及服务器端和客户端的配置。看看basicHttpBinding流式绑定。
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;
        }
    }