我正在尝试将许多功能放在一起,但事实证明,由于 .NET Compact Framework 的限制,这变得越来越困难。
具体来说,我有一个 WCF 服务,我正在为它编写一个移动设备客户端。收获?我想使用某种数据压缩(由于连接到所述设备的调制解调器非常慢)和 HTTP DIGEST 身份验证(托管 WCF 服务的站点上已经存在)。
我关注了this blog entry获取 WCF 服务客户端所需的压缩和生成代码。
但是,我正在为 HTTP 摘要而苦苦挣扎。我不知道如何添加此功能。
以前我没有使用压缩,因此我使用 SOAP 连接到 WCF 服务,使用一个简单的 WebService 引用,并添加 HTTP DIGEST 我必须重写 GetWebRequest
方法并添加手动要求的 header 。这一次,生成的类似乎没有什么回旋余地,我也没有什么可以覆盖的。此外,所有安全或身份验证参数似乎都是为 SSL 而设计的,而不是这种基本的身份验证方案。
总结一下:如何使用 .NET Compact Framework 创建一个使用压缩和 HTTP DIGEST 身份验证的 WCF 客户端?
编辑: 这是我目前获得的代码:
System.ServiceModel.Channels.CustomBinding customBinding = new System.ServiceModel.Channels.CustomBinding();
CompressionMessageEncodingBindingElement compressionBindingElement = new CompressionMessageEncodingBindingElement();
customBinding.Elements.Add(compressionBindingElement);
HttpTransportBindingElement httpBindingElement = new HttpTransportBindingElement();
customBinding.Elements.Add(httpBindingElement);
EndpointAddress endPoint = new EndpointAddress("http://localhost:5100/Service.svc");
ServiceClient client = new ServiceClient(customBinding, endPoint);
我怀疑我需要以某种方式将 HTTP DIGEST 功能添加到 CustomBinding
类,但我不知道如何做。
我想我还应该注意,当我使用 .NET Compact Framework 3.5 时,我正在创建一个 Windows CE 应用程序。因此,我没有费心去下载 Windows Mobile 6 SDK。如果这些 SDK 添加了更多可以在 Window CE 应用程序中使用并且需要 HTTP DIGEST 工作的功能,请告诉我。
最佳答案
我们最终为运行 .NET CF 的设备禁用了 DIGEST 身份验证。它不是那么安全,但我们认为在我们的案例中运行 .NET CF 的设备发送和检索的数据不是那么敏感,所以我们真正需要做的就是验证它。
关于c# - .NET Compact Framework、WCF 服务、压缩和 DIGEST 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6355233/