Events Microsoft CRM 4.0应用程序事件日志错误

Events Microsoft CRM 4.0应用程序事件日志错误,events,logging,dynamics-crm,dynamics-crm-4,crm,Events,Logging,Dynamics Crm,Dynamics Crm 4,Crm,不知道是否有人能帮忙。我们已经编写了大量用于Microsoft CRM 4.0的标注,这些标注都工作正常,符合预期。但是,我们注意到,每当其中一个调用出现错误时,错误消息会显示给用户(如预期的那样),但也会被放入Windows事件日志的“应用程序”选项卡中。这不是一个大问题,但是它在某种程度上填充了事件日志!是否有方法停止将调用错误发布到事件日志 详图索引示例,向用户和事件日志显示错误消息: public override PreCalloutReturnValue PreSetState(Ca

不知道是否有人能帮忙。我们已经编写了大量用于Microsoft CRM 4.0的标注,这些标注都工作正常,符合预期。但是,我们注意到,每当其中一个调用出现错误时,错误消息会显示给用户(如预期的那样),但也会被放入Windows事件日志的“应用程序”选项卡中。这不是一个大问题,但是它在某种程度上填充了事件日志!是否有方法停止将调用错误发布到事件日志

详图索引示例,向用户和事件日志显示错误消息:

public override PreCalloutReturnValue PreSetState(CalloutUserContext userContext, CalloutEntityContext entityContext, ref int newStateCode, ref int newStatusCode, ref string errorMessage)
            {
                try
                {
                    switch (entityContext.EntityTypeCode)
                    {
                        case Constants.TASK:

                            TaskCode taskCode = new TaskCode(ref _oServ, userContext.UserId);
                            task oTask = taskCode.GetTask(entityContext.InstanceId,
                                new string[]{"activityid", 
                                    "new_isdiscountauthorisation",  
                                    "new_discountstatus",
                                    "regardingobjectid",
                                    "isworkflowcreated"});

                            //*** only certain people able to update tasks (including owner) ***
                            if (!taskCode.PermitUpdate(userContext.UserId, entityContext.InstanceId))
                            {
                                errorMessage = "Only priveleged users and the owner of this task are permitted to update it";
                                return PreCalloutReturnValue.Abort;
                            }

                            break;

                            etc...................
                            etc...................



                    }
                }
                catch (Exception ex) { Utilities.LogError(ex, userContext.UserId); }

                return base.PreSetState(userContext, entityContext, ref newStateCode, ref newStatusCode, ref errorMessage);
            } 
两件简单的事情:

  • 事件查看器会自动删除较旧的事件,通过右键单击日志并选择“属性”,可以在事件查看器中设置事件的最大数量。因此,事件的数量并不重要,因为它只会丢弃旧的事件

  • 首先,您可能不应该在这些调用/插件中遇到错误。通常,您应该阻止用户启动他们不允许执行的操作。如果您有意不允许用户更新任务,我可能会在表单代码中有条件地处理(检查javascript中的权限并使字段为只读)。我也知道你举了个例子,所以我可能不理解问题的严重程度

我不知道有什么具体的方法可以防止错误写入日志,我觉得这是一种相当危险的做法,因为您可能会错过一些非常重要的内容。您可以尝试选择常见错误并将其过滤掉?

两件简单的事情:

  • 事件查看器会自动删除较旧的事件,通过右键单击日志并选择“属性”,可以在事件查看器中设置事件的最大数量。因此,事件的数量并不重要,因为它只会丢弃旧的事件

  • 首先,您可能不应该在这些调用/插件中遇到错误。通常,您应该阻止用户启动他们不允许执行的操作。如果您有意不允许用户更新任务,我可能会在表单代码中有条件地处理(检查javascript中的权限并使字段为只读)。我也知道你举了个例子,所以我可能不理解问题的严重程度

我不知道有什么具体的方法可以防止错误写入日志,我觉得这是一种相当危险的做法,因为您可能会错过一些非常重要的内容。您可以尝试选择常见错误并将其过滤掉吗