如何将大图像从wp7发送到wcf?

时间:2011-02-24 07:15:40

标签: c# wcf windows-phone-7

我正在尝试将图像发送到wcf以使用OCR。 现在,我成功地将我的图像转换为byte []并使用wcf将其发送到服务器。不幸的是,它适用于大小<16Kb的数组,不适用于数组&gt; 17Kb。

我已经在服务器大小的web.config中将readerQuotasmaxArrayLength设置为其最大大小。

你知道如何将大数据发送到wcf服务器,或者任何库直接在wp7上使用OCR吗?

5 个答案:

答案 0 :(得分:4)

如果所有其他方法都失败了,请以16Kb的片段发送,然后发送“全部完成”消息(必要时重新组装)

答案 1 :(得分:1)

我不知道这是否适用于WP7,但是使用WCF,您还可以使用流来上传更多数据。

答案 2 :(得分:1)

如果它不是太大的话,怎么用HTTP帖子发送它?或者更改web服务以便接受blob? (当前数组限制是W3C规范中数组数据类型的限制)

答案 3 :(得分:1)

最终解决了。 您必须更新web.config以允许服务器接收大数据。然后你必须使用你的WCF中的Stream类型和WP7中的byte []类型。类型将匹配,WCF或WP7将同意接收和发送它。

在WCF中:

public string ConvertImgToStringPiece(Stream img)
{
     //.....
}

在WP7中:

Service1Client proxy = new Service1Client();    
proxy.ConvertImgToStringPieceCompleted += new EventHandler<ConvertImgToStringPieceCompletedEventArgs>(proxy_ConvertImgToStringPieceCompleted);    
proxy.ConvertImgToStringPieceAsync(b); //b is my Byte[], more thant 17Kb.

答案 4 :(得分:0)

您可以尝试使用WCF会话。要记住的关键是WCF中的会话与我们用于Internet编程的常规会话不同。它基本上是一个方法的调用,它启动会话,任何临时调用,然后是结束会话的最后一个。您可以进行一次服务调用,启动会话,发送图像块,然后调用最后一个关闭会话的服务,并返回您需要的任何内容。

http://msdn.microsoft.com/en-us/library/ms733040.aspx