Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
windows phone 8.1 REST WCF服务上载映像_Wcf_Rest_Windows Phone 8_Windows Phone 8.1_Httprequest - Fatal编程技术网

windows phone 8.1 REST WCF服务上载映像

windows phone 8.1 REST WCF服务上载映像,wcf,rest,windows-phone-8,windows-phone-8.1,httprequest,Wcf,Rest,Windows Phone 8,Windows Phone 8.1,Httprequest,我想从windows phone 8.1应用程序将图像上载到我的wcf服务。我使用HttpRequest/HttpResponse消息 客户端代码: private async void RecognizeProduct() { HttpClient httpClient = new HttpClient(); MultipartFormDataContent form = new MultipartFormDataContent();

我想从windows phone 8.1应用程序将图像上载到我的wcf服务。我使用HttpRequest/HttpResponse消息

客户端代码:

private async void RecognizeProduct()
    {
        HttpClient httpClient = new HttpClient();
        MultipartFormDataContent form = new MultipartFormDataContent();


        byte[] arr = originalBitmap.ToByteArray();
        var barcodeImageForm = new ByteArrayContent(arr, 0, arr.Count());
        barcodeImageForm.Headers.ContentType = new MediaTypeHeaderValue("image/bmp");

        form.Add(barcodeImageForm, "image", "barcodeImage.bmp");

        HttpResponseMessage response = await httpClient.PostAsync("http://localhost:51746/Service.svc/recognize", form);

        response.EnsureSuccessStatusCode();
        httpClient.Dispose();
        string result = response.Content.ReadAsStringAsync().Result;
    }
[OperationContract]
    [WebInvoke(UriTemplate = "/recognize", Method="POST")]
    string RecognizeBarcode(Stream barcodeImageStream);
 public string RecognizeBarcode(Stream barcodeImageStream)
    {
        byte[] buffer = new byte[32768];
        MemoryStream ms = new MemoryStream();
        barcodeImageStream.CopyTo(ms);
        Bitmap barcodePhoto = new Bitmap(barcodeImageStream);
        string barcodeResult = BarcodeEncoder.BarcodeEncode(barcodePhoto);
        barcodeImageStream.Close();
        ms.Close();
        return barcodeResult;
    }
服务接口:

private async void RecognizeProduct()
    {
        HttpClient httpClient = new HttpClient();
        MultipartFormDataContent form = new MultipartFormDataContent();


        byte[] arr = originalBitmap.ToByteArray();
        var barcodeImageForm = new ByteArrayContent(arr, 0, arr.Count());
        barcodeImageForm.Headers.ContentType = new MediaTypeHeaderValue("image/bmp");

        form.Add(barcodeImageForm, "image", "barcodeImage.bmp");

        HttpResponseMessage response = await httpClient.PostAsync("http://localhost:51746/Service.svc/recognize", form);

        response.EnsureSuccessStatusCode();
        httpClient.Dispose();
        string result = response.Content.ReadAsStringAsync().Result;
    }
[OperationContract]
    [WebInvoke(UriTemplate = "/recognize", Method="POST")]
    string RecognizeBarcode(Stream barcodeImageStream);
 public string RecognizeBarcode(Stream barcodeImageStream)
    {
        byte[] buffer = new byte[32768];
        MemoryStream ms = new MemoryStream();
        barcodeImageStream.CopyTo(ms);
        Bitmap barcodePhoto = new Bitmap(barcodeImageStream);
        string barcodeResult = BarcodeEncoder.BarcodeEncode(barcodePhoto);
        barcodeImageStream.Close();
        ms.Close();
        return barcodeResult;
    }
服务方式:

private async void RecognizeProduct()
    {
        HttpClient httpClient = new HttpClient();
        MultipartFormDataContent form = new MultipartFormDataContent();


        byte[] arr = originalBitmap.ToByteArray();
        var barcodeImageForm = new ByteArrayContent(arr, 0, arr.Count());
        barcodeImageForm.Headers.ContentType = new MediaTypeHeaderValue("image/bmp");

        form.Add(barcodeImageForm, "image", "barcodeImage.bmp");

        HttpResponseMessage response = await httpClient.PostAsync("http://localhost:51746/Service.svc/recognize", form);

        response.EnsureSuccessStatusCode();
        httpClient.Dispose();
        string result = response.Content.ReadAsStringAsync().Result;
    }
[OperationContract]
    [WebInvoke(UriTemplate = "/recognize", Method="POST")]
    string RecognizeBarcode(Stream barcodeImageStream);
 public string RecognizeBarcode(Stream barcodeImageStream)
    {
        byte[] buffer = new byte[32768];
        MemoryStream ms = new MemoryStream();
        barcodeImageStream.CopyTo(ms);
        Bitmap barcodePhoto = new Bitmap(barcodeImageStream);
        string barcodeResult = BarcodeEncoder.BarcodeEncode(barcodePhoto);
        barcodeImageStream.Close();
        ms.Close();
        return barcodeResult;
    }
Web.config

<bindings>
  <webHttpBinding>
    <binding name="" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
             transferMode="Streamed"  openTimeout="00:25:00" closeTimeout="00:25:00"
             sendTimeout="00:25:00" receiveTimeout="00:25:00">
    </binding>
  </webHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="MyServiceBehavior" name="WhereCheaperService.Service">
    <endpoint address="" binding="webHttpBinding"  behaviorConfiguration="web" contract="WhereCheaperService.IService">
      <identity>
        <dns value="localhost"/>
      </identity>
    </endpoint>
    <endpoint address="max" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
  </service>
</services>
<behaviors>
  <!--BEGIN ADD ENDPOINT BEHAVIOR-->
  <endpointBehaviors>
    <behavior name ="web">
      <webHttp />
    </behavior>
  </endpointBehaviors>
  <!--END of ADD ENDPOINT BEHAVIOR-->
  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

我怎样才能解决这个问题?谢谢。

正如MSDN在位图构造函数(流)的页面()上所写,如果出现以下情况,您将获得“System.ArgumentException”:

流不包含图像数据或为空。 -或- 流包含单个尺寸大于65535像素的PNG图像文件


你应该检查这些条件

我很高兴能帮上忙!