【问题标题】:Is there a way to increase the timeout value for Dynamics CRM server invocation?有没有办法增加 Dynamics CRM 服务器调用的超时值?
【发布时间】:2011-05-20 18:41:24
【问题描述】:

我正在编写一个简单的应用程序来测试 CRMSDK 提供的 Linq 查询功能。

我的代码很简单。

     var before = DateTime.Now;
     var crm = new Stub.Xrm.MyDataContext("MyCRM");
     var contact = crm.contacts.FirstOrDefault();
     var span = new TimeSpan(DateTime.Now.Ticks-before.Ticks);
     Console.WriteLine("The name is " + contact.name);
     Console.WriteLine("It took " + span.Seconds + " seconds to run this program " );

运行大约需要一分钟,但它确实有效。 然后我尝试查询不同的实体,例如帐户,我得到了

Unhandled Exception: System.Net.WebException: The operation has timed out

我怀疑发生这种情况是因为我的帐户比联系人多,因此处理帐户查询需要更长的时间。我正在尝试将我的 app.config 的超时值增加,但没有奏效。

【问题讨论】:

    标签: dynamics-crm dynamics-crm-4


    【解决方案1】:

    您的应用程序不会发生超时。超时发生在服务器端。因此你可以在那里增加它。

    您会一次加载所有记录并获取序列的第一个记录,这有什么特殊原因吗?

    你不应该有一个unbounded result set.的请求 如果您的系统中有 500k 个帐户,则查询将返回所有帐户(包括所有已填充的属性)。

    【讨论】:

    • 据我对 Linq 的理解,crm.contacts 语句不会带回所有记录。在调用 .FirstOrDefault() 之前,它不会被执行。因此,linq 提供程序将整个语句转换为 select top(1) * from contacts 之类的内容;无论如何,我给出的示例只是试图测试 Linq 是否有效。原来启动时间很慢,但是第一次查询后不到一秒。我现在想知道为什么启动时间这么长。
    【解决方案2】:

    您可以在 CRM 的 web.config 中增加超时值。

    【讨论】:

      【解决方案3】:

      要增加 CRM 超时,您可以使用两种方法:

      1. 服务器端
        看看这个'A time-out occurs when you import large customization files into Microsoft Dynamics CRM'
      2. 客户端
        如果使用服务代理作为连接场景,可以设置 Timeout 属性。这是示例:

        _serviceProxy.EnableProxyTypes();
        var timeout = new TimeSpan(0, 10, 0); // 添加 10 分钟
        _serviceProxy.Timeout = 超时;

        希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-14
        • 1970-01-01
        • 1970-01-01
        • 2023-02-22
        • 1970-01-01
        相关资源
        最近更新 更多