【问题标题】:CRM 2011: Entity form halt when plugin executedCRM 2011:执行插件时实体表单停止
【发布时间】:2014-02-25 15:54:20
【问题描述】:

在 CRM 2011 中,我想使用插件将电子邮件活动的描述导出为 doc 文件。插件执行后出现以下问题:

问题:它禁用了电子邮件活动表单。

以下是我目前为止的插件代码。

IPluginExecutionContext context = (IPluginExecutionContext)isp.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)isp.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = factory.CreateOrganizationService(context.UserId);
            ITracingService t_service = (ITracingService)isp.GetService(typeof(ITracingService));

            service.Update(entity);
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {

                    Entity entity = (Entity)context.InputParameters["Target"];
     string strFileName = subject + ".doc";
                    HttpContext.Current.Response.AddHeader("Content-Disposition", "inline;filename=" + strFileName);
                    HttpContext.Current.Response.Clear();
                    HttpContext.Current.Response.Charset = "";
                    HttpContext.Current.Response.ContentType = "application/msword";
                    StringBuilder strHTMLContent = new StringBuilder();
                    strHTMLContent.Append(html);
                    HttpContext.Current.Response.Write(strHTMLContent);
                    HttpContext.Current.ApplicationInstance.CompleteRequest();
                    HttpContext.Current.Response.Flush();

我想在这方面寻求您的帮助,使其无法禁用电子邮件活动表单。

【问题讨论】:

  • “停止电子邮件活动表单”是什么意思?
  • 意思是在我刷新表单之前禁用表单
  • 更新您的问题,然后成为您的意思。
  • 所以基本上,你点击保存,它永远不会完成?只是坐在那里挂着,等待实体拯救?
  • 我已经更新了我的问题。它会生成 word 文件并允许我在弹出窗口中下载、打开或取消,但表单会被禁用。

标签: c# plugins dynamics-crm-2011


【解决方案1】:

您正在创建一个无限循环。更新目标时无需调用Update。只需进行您想要的更改,作为插件上下文的一部分,将在实际将实体保存到 SQL 时进行更改。 (这是假设您注册为 Pre-Update)如果需要在 Pre-Validation 或 Post Update 中注册,use shared-variables to keep from creating an infinite loop

【讨论】:

  • 更新服务用于更新我的标志值
【解决方案2】:

这里的问题是您正在尝试调整插件中的响应流。插件并不意味着这样做。插件在服务器端运行,不仅由通过 Web 浏览器界面执行的操作触发。例如,一些中间件的控制台程序也可以调用 CRM API 的方法。

在您的情况下,Web 客户端向服务器发送 SOAP 发布消息,告诉它创建或更新电子邮件记录。客户端期望从服务器接收 SOAP 响应消息。相反,它正在接收一个无法处理的二进制流。

当用户需要自动下载 Word 文档时,您需要开发自定义 Web 服务或寻找不同的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多