【问题标题】:How to enable GZIP on WP in PortableClassLibrary (MVVMCross)?? WP can not connect to WCF如何在 PortableClassLibrary (MVVMCross) 中的 WP 上启用 GZIP? WP 无法连接到 WCF
【发布时间】:2013-03-21 17:52:24
【问题描述】:

在 MVVMCross 的可移植库中启用 Windows Phone 上的 GZip 压缩时,我需要一点帮助。

我有 WCF 服务,我尝试连接 WP,但几秒钟后我发现远程服务器未找到。我尝试通过silverlight连接,它工作正常。几个小时后,我猜 - 感谢提琴手 - 我的问题在于压缩,数据被压缩并且 WP 不读取它。我还尝试在 IIS 配置中关闭压缩,但问题仍然存在 - (使用提琴手检查,Accept-Encoding: gzip,delate,sdch; Content-Encoding:none)。它适用于任何默认 WindowsPhone 客户端以及新项目创建的任何默认 WCF 服务。

欢迎提出任何想法。 提前致谢

我的代码是:

WcfMobileServiceClient db = new WcfMobileServiceClient();

db.CheckConnectionCompleted += (sender, args) =>{};

db.CheckConnectionAsync("test");

更新:将 WindowsPhone 连接到 WCF 的问题在于 VS2012 上的 WP8 模拟器 - 它有一个隔离的网络。更多信息在这里:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj684580(v=vs.105).aspx

【问题讨论】:

  • WP 是否请求压缩(使用 Accept-Encoding)?如果它不请求它,则 IIS 不应该发送压缩数据。您能否将您的请求/响应标头添加到问题中?
  • 我用 fiddler 看不到它,因为它没有显示 - 不知道为什么 - 日志来自 SilverLight。我的问题是任何 WP 项目和任何 WCF 项目。更新代码

标签: c# wcf windows-phone mvvmcross portable-class-library


【解决方案1】:

听起来这与 PCL 无关,也与 MvvmCross 无关 - 先研究如何在 WP 中使用 WCF 解决它,然后再考虑添加接口或抽象层来使用 PCL 中的压缩代码。


AFAIK,这只是 WindowsPhone 上的一个问题 - 我相信 Droid、Touch、WPF 和 RT 都支持压缩而不需要额外的代码。

但是,WindowsPhone 的 Compact Framework 中的网络堆栈不支持 GZip - 因此您必须要么不请求 GZip 数据(这对网络性能不利),要么必须提供自己的解压缩实现。

在非 PCL 项目中,提供压缩支持相当简单 - 有几种可用的解决方案 - 例如

一旦你得到这个工作,那么你应该能够使用像依赖注入这样的技术在 PCL 项目中使用它(参见你之前的问题Connecting MVVMCross Portable connect to WCF DataService. Is it possible?

【讨论】:

    【解决方案2】:

    查看适用于 Windows Phone 的 GZipWebClient。

    https://github.com/dotMorten/SharpGIS.GZipWebClient

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2018-04-14
      • 1970-01-01
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多