c# - 使用自定义按钮从 CRM 中执行存储过程的最佳方法

标签 c# javascript asp.net wcf dynamics-crm-4

我正在寻求一些建议。我们有多个系统每晚从 Microsoft Dynamics 4 (CRM) 同步。然而,我经常被要求在白天手动执行 SP,因为有时需要立即同步。此 SP 与 CRM 位于不同的服务器上。

我想向 CRM 添加一个自定义按钮,允许用户在需要时将 CRM 同步到其他系统。我不希望这是每次更新记录时都会发生的工作流程,这将由用户决定。

我已经做了一些谷歌搜索,我正处于一个十字路口,不知道如何最好地解决这个问题。 1) 从按钮的 javascript 执行服务或 2) 使用工作流执行 SSIS 并从按钮调用它。

如果我使用选项 1,创建 Web 服务的最佳方法是什么?请记住,根据站点之间的互联网速度,同步过程可能需要几分钟的时间才能运行,因此我必须小心超时。如果我使用.Net 3.5 asmx Web服务,有没有办法立即响应,并在后台运行SP?我知道我可以从 Javascript 调用它。我相信替代方案是使用 WCF 工作流服务(这对我来说是全新的),它将允许后台处理 - 但这可以从 Javascript 调用吗?

如果我使用选项 2,如何从 CRM 执行本地 SSIS?我读过这是可能的,但我找不到例子。

抱歉文字墙。任何有关方法的指导或建议将不胜感激。非常感谢。

TL;DR:我正在寻找一些有关如何使用自定义按钮在 Dynamics 4 中的不同数据库上执行存储过程的建议。

最佳答案

您必须创建一个 Web 服务。它可以是 WCF 服务或经典的 ASMX 服务。在 CRM 服务器上部署它会稍微复杂一些,但这是可以完成的(在 ISV 文件夹中部署应用程序,然后修改应用程序的 web.config 文件,以便它在自己的配置中恢复 CRM 集的所有自定义内容)。如果您有一个单独的 Web 服务器(或者至少在 CRM 服务器上有一个单独的网站),那就容易多了。

该服务必须标记为 OneWay - 以便它在被调用后立即返回给调用者。不幸的是,这也意味着您将无法返回错误消息 - 这些消息必须写入日志中。

现在在 CRM 表单中创建一个按钮并使用 JavaScript 调用该服务。您应该能够配置您的服务,以便可以通过在 URL 参数中传递任何参数来调用它。

关于c# - 使用自定义按钮从 CRM 中执行存储过程的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15520662/

相关文章:

asp.net - 认证子目录访问

c# - Silverlight Master/Detail 的情况

c# - 使用 C# 跟踪 Active Directory 中的更改

c# - Visual Studio 解决方案 - 解决方案所需的实用程序 EXE 的正确位置

c# - 带有鼠标悬停的列标题的 gridView 定义

javascript - 如何在同一页面添加多个jssor实例?

javascript - 具有 Access-Control-Allow-Origin : * 的服务器

javascript - 如何在 ui-grid 标题中显示带括号的内容?

c# - 跟踪按钮点击次数

javascript - Asp.net 页面方法不适用于大多数浏览器