0

我在使用新的 MS CRM 2015 时遇到了一些问题,因为我无法启动我的插件。我什至尝试从 2015 SDK 中提取一些非常简单的插件示例并将它们注册为“非沙盒”,但结果是一样的。

在触发事件上我唯一无法真正做任何事情的是插件分析器,但这对我并没有太大帮助。

有没有其他人有这个问题?

我真的可以就下一步尝试/检查的内容提出一些建议,因为在这种情况下谷歌似乎不是我的朋友?

顺便说一下,当前部署是本地部署,但服务器上没有可用的 Visual Studio。

这是来自示例的代码,我只对它进行了一点改动,只在 1 个特定帐户上触发。

using System;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;

namespace Microsoft.Crm.Sdk.Samples
{
    public class FollowupPlugin: IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            //Extract the tracing service for use in debugging sandboxed plug-ins.
            ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            // Obtain the execution context from the service provider.
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            //</snippetFollowupPlugin1>

            //<snippetFollowupPlugin2>
            // The InputParameters collection contains all the data passed in the message request.
            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                // Obtain the target entity from the input parameters.
                Entity entity = (Entity)context.InputParameters["Target"];
                //</snippetFollowupPlugin2>

                // Verify that the target entity represents an account.
                // If not, this plug-in was not registered correctly.
                if (entity.LogicalName != "account")
                    return;

                try
                {
                    if (entity.Attributes.ContainsKey("accountid"))
                    {
                        if (entity.GetAttributeValue<Guid>("accountid").ToString().ToLower() == "ee03d883-5b18-de11-a0d1-000c2962895d") // specific test account
                        {
                            // Create a task activity to follow up with the account customer in 7 days. 
                            Entity followup = new Entity("task");

                            followup["subject"] = "Send e-mail to the new customer.";
                            followup["description"] = "Follow up with the customer. Check if there are any new issues that need resolution.";
                            followup["scheduledstart"] = DateTime.Now.AddDays(7);
                            followup["scheduledend"] = DateTime.Now.AddDays(7);
                            followup["category"] = context.PrimaryEntityName;

                            // Refer to the account in the task activity.
                            if (context.OutputParameters.Contains("id"))
                            {
                                Guid regardingobjectid = new Guid(context.OutputParameters["id"].ToString());
                                string regardingobjectidType = "account";

                                followup["regardingobjectid"] = new EntityReference(regardingobjectidType, regardingobjectid);
                            }

                            //<snippetFollowupPlugin4>
                            // Obtain the organization service reference.
                            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
                            //</snippetFollowupPlugin4>

                            // Create the task in Microsoft Dynamics CRM.
                            tracingService.Trace("FollowupPlugin: Creating the task activity.");
                            service.Create(followup);
                        }
                    }
                }
                //<snippetFollowupPlugin3>
                catch (FaultException<OrganizationServiceFault> ex)
                {
                    throw new InvalidPluginExecutionException("An error occurred in the FollupupPlugin plug-in.", ex);
                }
                //</snippetFollowupPlugin3>

                catch (Exception ex)
                {
                    tracingService.Trace("FollowupPlugin: {0}", ex.ToString());
                    throw;
                }
            }
        }
    }
}

报名截图:

在此处输入图像描述 在此处输入图像描述

4

1 回答 1

1

尝试使用以下代码:

using System;
using System.ServiceModel;
using Microsoft.Xrm.Sdk;
namespace Microsoft.Crm.Sdk.Samples
{
    public class FollowupPlugin: IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            //Extract the tracing service for use in debugging sandboxed plug-ins.
            ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            // Obtain the execution context from the service provider.
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            //</snippetFollowupPlugin1>

            //<snippetFollowupPlugin2>
            // The InputParameters collection contains all the data passed in the message request.
            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                // Obtain the target entity from the input parameters.
                Entity entity = (Entity)context.InputParameters["Target"];
                //</snippetFollowupPlugin2>

                // Verify that the target entity represents an account.
                // If not, this plug-in was not registered correctly.
                if (entity.LogicalName != "account")
                    return;

                try
                {

                        if (entity.Id.Equals(new Guid("ee03d883-5b18-de11-a0d1-000c2962895d")) // specific test account
                        {
                            // Create a task activity to follow up with the account customer in 7 days. 
                            Entity followup = new Entity("task");

                            followup["subject"] = "Send e-mail to the new customer.";
                            followup["description"] = "Follow up with the customer. Check if there are any new issues that need resolution.";
                            followup["scheduledstart"] = DateTime.Now.AddDays(7);
                            followup["scheduledend"] = DateTime.Now.AddDays(7);
                            followup["category"] = context.PrimaryEntityName;
                            followup["regardingobjectid"] = entity.ToEntityReference();

                            //<snippetFollowupPlugin4>
                            // Obtain the organization service reference.
                            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
                            //</snippetFollowupPlugin4>

                            // Create the task in Microsoft Dynamics CRM.
                            tracingService.Trace("FollowupPlugin: Creating the task activity.");
                            service.Create(followup);
                        }
                }
                //<snippetFollowupPlugin3>
                catch (FaultException<OrganizationServiceFault> ex)
                {
                    throw new InvalidPluginExecutionException("An error occurred in the FollupupPlugin plug-in.", ex);
                }
                //</snippetFollowupPlugin3>

                catch (Exception ex)
                {
                    tracingService.Trace("FollowupPlugin: {0}", ex.ToString());
                    throw;
                }
            }
        }
    }
}
于 2015-01-12T12:02:17.543 回答