【问题标题】:An error occurred when verifying security for the message on CRM SDK在 CRM SDK 上验证消息的安全性时出错
【发布时间】:2014-05-14 16:35:00
【问题描述】:

从 CRM SDK 代码连接 CRM 2013 时出现错误。错误信息是

从对方收到不安全或不正确安全的故障 派对。故障代码和细节见内部FaultException。

这是内部异常消息:

验证消息的安全性时出错。

CRM 安装在 Virtual Box 上,包括:

  • Windows Server 2012
  • CRM 2013
  • SQL Server 2012
  • 主机和客户机之间的时区和日期时间已经相同

我已经用以下场景测试了 CRM 连接

  • 能够从主机浏览器访问 CRM (Windows 7)
  • 能够从客户机(Win Server 2012)运行以下代码(CRM SDK)
  • 无法从主机 (Windows 7) 运行以下代码

这是我的源代码:

        var uri = new Uri(@"http://XXXX/MRC/XRMServices/2011/Organization.svc");
        var username = @"XX\Administrator";
        var password = "password";

        _credential.UserName.UserName = username;
        _credential.UserName.Password = password;

        using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(uri, null, _credential, null))
        {
            serviceProxy.EnableProxyTypes();
            IOrganizationService service = (IOrganizationService)serviceProxy;
            MRServiceContext context = new MRServiceContext(service);
            var query = context.ContactSet.ToList();
            foreach (var item in query)
            {
                Console.WriteLine(item.FirstName);
            }
        }

提前致谢。

【问题讨论】:

  • Administrator中的'XX'是域名吗?尝试删除它,只使用用户名。
  • @Ryan:感谢您的快速回复。我已尝试删除用户名变量上的域值,但问题仍然存在。我只是按照显示身份验证窗口时需要输入域值的 Web 浏览器场景进行操作。
  • 尝试使用简化连接:stackoverflow.com/a/15930366/2191473
  • 我在使用机器名称连接到端点时遇到了问题,但它适用于 IP。可以试试用机器的IP替换XXXX吗?

标签: c# dynamics-crm-2011 dynamics-crm-2013


【解决方案1】:

哎呀,这是我犯过的一个愚蠢的错误。这个问题是由于来宾机器的日期是过去与主机比较造成的。我只检查了已经相同的来宾和主机上的时间。但是,我忘记检查日期了。

这是线索:

System.ServiceModel.Security.MessageSecurityException, System.ServiceModel,             
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType>
<Message>The security timestamp is stale because its expiration time 
('2014-04-03T06:49:23.526Z') is in the past. Current time is '2014-04-04T06:44:14.447Z' 
and allowed clock skew is '00:05:00'.</Message><StackTrace>   at 
System.ServiceModel.Security.SecurityTimestamp.ValidateFreshness(TimeSpan timeToLive, 
TimeSpan allowedClockSkew)

这是检查 CRM 上发生的一些错误(不会出现在客户端)的最佳方法:

  1. Enable tracing in Microsoft Dynamics CRM 了解发生的真正问题
  2. 读取通常在 C:\Program Files\Microsoft Dynamics CRM\Trace 上可用的日志/堆栈跟踪文件

希望此步骤对其他人有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2020-05-19
    • 2011-10-20
    • 2013-10-18
    • 2011-04-15
    • 1970-01-01
    • 2016-05-30
    相关资源
    最近更新 更多