我正在尝试将WCF实现到MonoDroid中。我认为它与MonoTouch在这个问题上没有太大的区别。经过研究,除了BasicHttpBinding之外,我还没有找到任何其他WCF绑定模式的支持。
老实说,我对WCF一点都不好,所以我只是随意尝试。我可以使用字符串和byte []等从服务器获取消息,但是当我想上传大数据时,例如。图像或音频,包含大字节[]的上传消息必须限制在8192bytes以下。这导致我的上传失败。
现在我可以做的是将大字节[]转换为Base64String并将其拆分为8000字节,然后执行一系列命令,如UploadAsyn(orderNumber,uploadStringBlock),并使用orderNumber在服务器中再次重新编译它们。并从Base64string转换回字节。非常忙碌而且很傻!
否则我必须考虑用手机解决大文件上传的其他方式。
在WCF编码中完全实现所有操作真的是一个很大的遗憾和问题。
希望单声道改进它。如果有任何帮助欢迎和赞赏。
答案 0 :(得分: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.
}