【问题标题】:CRM 2011 OrganizationService DisposedCRM 2011 组织服务处置
【发布时间】:2015-08-15 12:35:45
【问题描述】:

我们正在创建一个与 CRM 2011 对话的 ASP.NET MVC 应用程序。我们正在使用 Xrm.Client.Services.OrganizationService。为此,我们有一个单例模式。

在负载下,我们看到了 ObjectDisposedException(无法访问已处置的对象)。我认为单身人士不是去这里的方式。

我正在考虑一个 [ThreadStatic] 单例,或者一个服务池,或者任何其他可能有帮助的东西。有人知道可以建立的 CRM 连接数量有任何限制吗?有人体验过disposed service吗?有人告诉我,一次连接到 CRM 的组织服务太多也会有问题,所以这就是为什么我没有为每次访问 CRM 创建一个新服务。

感谢您提供的任何帮助!如果需要进一步说明,请询问。

【问题讨论】:

  • Xrm.Client.Services.OrganizationService 不是线程安全的,因此将它的单个实例包装在 Singleton 中的想法肯定会开始引起问题。我会看一下xrmlibrary.codeplex.com(无论您选择使用它还是自己推出),您都可以看到他们如何处理IOrganizationService 的池实例,这正是您需要的。另请参阅此相关答案:stackoverflow.com/questions/12764225/…
  • @Nicknow 你应该写这个评论作为答案

标签: c# singleton dynamics-crm-2011 crm threadstatic


【解决方案1】:

OrganizationService 不是多线程安全的。它也是用户感知的,因此根据您实现服务创建的方式,您可能会或可能无法在用户之间共享它。 (如果您不模仿它,应该没问题,但是您会失去所有集成的 CRM 安全性)

在某个时间点,我确实编写了一个 CRM 组织服务池,但它与在需要时创建服务并没有什么不同。理想情况下,您可能只想为每个用户请求创建一次服务。

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-16
    • 2013-03-02
    • 1970-01-01
    相关资源
    最近更新 更多