【问题标题】:Client can't open service on Win8Win8客户端打不开服务
【发布时间】:2014-11-06 21:26:15
【问题描述】:

我将 WSHttpBinding 用于可能的 wcf 应用程序。当我尝试在 Windows 8.1(不是 Pro)上运行客户端时遇到问题。每次运行Service.Open()时应用程序都会崩溃

绑定配置:

WSHttpBinding binding = new WSHttpBinding();
binding.MaxReceivedMessageSize = 524288; 
binding.ReliableSession.Enabled = true;
binding.MessageEncoding = WSMessageEncoding.Text;
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;

对于其他操作系统,它运行良好。

异常消息:从另一方收到不安全或不正确安全的故障。故障代码和细节见内部FaultException。

内部异常:安全验证错误消息。

【问题讨论】:

  • 捕获异常并阅读错误信息?

标签: c# wcf


【解决方案1】:

Metro 应用(win 8)支持以下 WCF 绑定:

  • 基本HttpBinding
  • NetTcpBinding
  • NetHttpBinding
  • 自定义绑定

WSHttpBinding 不受支持!

在 win 8.1 win WSHttpBinding 确实有效并且应该使用,因为 Microsoft 在 8.1 / 2012 R2 中增强了 LSAS 的安全性,并且 BasicHttpBinding 应该失败,因为它不再支持发送网络上的用户身份信息。

我猜你正在以同样的方式使用 WSHttpBinding - 你想使用用户名/密码并通过网络发送它们。

您的情况应该是:Message Security with a User Name Client

我完全不知道问题出在哪里,但似乎是信任问题。您的错误被抛出,因为您的安全验证失败在验证中。

如果程序在 win 8.1 pro 而不是 win 8.1 上运行:

  • 您使用用户名 + 证书验证然后重新安装证书
  • 然后您使用用户名 + 密码进行验证,然后检查域用户是否存在以及它是否尝试连接到正确的域。

否则我会有一些侥幸的机会,例如:

  • 证书不退出
  • 证书没有所需的权限
  • 证书基于其他一些无效、已卸载、过期或...的证书。
  • 证书或其基础证书使用不受支持的算法

【讨论】:

  • 是的,你是对的。我使用此绑定进行授权。
  • 我使用用户名+密码来验证。用户名和密码取自数据库。对于测试,我们使用 OpenSSL 生成的证书。我使用带有 openkey 令牌的文件的客户端计算机上未安装证书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多