首页 > 代码库 > Dynamics CRM 远程调试自定义工作流活动

Dynamics CRM 远程调试自定义工作流活动

据我所知,Dynamics CRM工作流的调试方式有几种:

Throw抛出异常错误

使用TracingService

服务器附加进程调试

对于插件有PluginProflier

 

以上几中方式各有优缺点。

抛出异常错误:快速查看少量对象值,对于多个对象或调试条件分支,需要不断地试错。

使用TracingService:可记录执行过程,需要开启日志监控,不能即时跟踪对象。

服务器附加进程:可即时跟踪对象,需要服务器权限并登录服务器。

 

下面记录下使用本地远程调试的过程

工具准备:

Visual Studio 2017

Visual Studio 2017 远程工具

工具下载地址:https://www.visualstudio.com/zh-hans/downloads/

 

首先,我这里使用SDK的Sample来创建一个自定义工作流活动,记得程序集要签名

技术分享

 

然后使用插件注册工具,注册自定义工作流活动

技术分享

注册类型这里我选择Sandbox

技术分享

接着在CRM里面自定义一个工作流,在创建完客户之后执行此工作流。

技术分享

接下来需要在远程服务器运行RemoteDebugger,下载安装完后,在开始里搜索

技术分享

打开Remote Debugger

技术分享

这时就可以在客户机使用VisualStudio 附加远程进程了。

打开前面创建的自定义工作流活动项目CustomWFActivity,选择VisualStudio菜单-》调试-》附加到进程,点击查找

技术分享

弹出防火墙提示,点击允许访问。

技术分享

这时可以看到远程服务器名称及IP地址

技术分享

点击该服务器,出现选择按钮。

技术分享

点击选择,提示输入凭据

技术分享

如果选择保存凭据

技术分享

则在控制面板\用户帐户\凭据管理器 会保存用户名和密码,下次就不再需要输入

技术分享

输入后,稍等一会就会自动加载远程服务器的进程列表

技术分享

因为注册自定义工作流活动时,注册类型是SandBox,所以这里要选择Sandbox进程,Sandbox进程有两个,选择WorkerProcess,然后点击附加。

技术分享

附加完进程之后,设置需要调试的断点。

为了触发工作流,这里我新建一个客户,并保存。

技术分享

技术分享

稍等片刻,Visual Studio 2017就会自动弹出界面并中断程序。

技术分享

接下来,就可以监控到程序运行情况了。

技术分享

到此,远程调试已经完成,这种调试方式的好处在于即时查看对象值及程序执行情况。

对于插件的调试也是一样的,只是监控的进程不一样,调试插件监控w3wp进程。

如果注册时,注册类型不是Sandbox,那就需要附加进程到CrmAsyncService.exe进程,但这里有两个同名进程,而且无法区分哪个是maintenance进程,可以分别尝试或查看服务器端哪个PID是工作进程

技术分享

技术分享

其实,如果服务器能够读取到客户机VisualStudio 的安装目录,就可以直接运行远程调试工具而不用下载。

技术分享

 

如果有更好的调试方式,欢迎分享。

Dynamics CRM 远程调试自定义工作流活动