0

我正在尝试将 WCF 实现到 MonoDroid 中。我认为在这个问题上它和 MonoTouch 没有太大区别。而且经过研究,除了BasicHttpBinding之外,我找不到任何其他WCF绑定模式的支持。

老实说,我一点也不擅长 WCF,所以我只是随机尝试了一些方法。我可以使用字符串和字节 [] 等从服务器获取消息,但是当我想上传大数据时,例如。图片或音频,上传的包含大字节[]的消息必须限制在8192字节以下。这导致我的上传失败。

现在我能做的就是把big byte[]转换成Base64String,分割成8000bytes的片段,然后执行UploadAsyn(orderNumber,uploadStringBlock)之类的一堆命令,然后在服务器中用orderNumber重新重组。并从 Base64string 转换回字节。很忙很傻!

否则我必须想其他方法来解决从手机上传大文件的问题。

没有让所有的动作完全在 WCF 编码中实现真的是一个很大的遗憾和问题。

希望 Mono 改进它。如果有任何帮助,欢迎和赞赏。

4

1 回答 1

0

最好的办法是不使用 WCF 上传数据,而是使用普通的 HTTP 传输。使用 WCF 安全地获取上传令牌,该令牌可能只是一个 url,它对您可以执行 HTTP POST 的地址和将 POST 与您正在上传的用户/状态相关联的参数进行编码。

例如,您的 WCF 请求可以这样做:

string GetTokenForUpload ()
{
    var uuid = new UUID ();
    db.Insert (key: uuid, for: "upload", login: user.Credentials);
    return base_url + "?id=" + uuid; 
}

然后在常规 ASHX 处理程序的 POST 处理程序上,您可以执行以下操作:

PostRequest (HttpRequest req, QueryString qstring)
{
    id = qstring ["id"];
    if (!db.Lookup (id, out userCredentials))
        error ();
    // accept post for the user.
}
于 2012-09-01T23:13:47.860 回答