想知道是否有人可以提供帮助。我们编写了大量用于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);
}
答案 0 :(得分:1)
两件快事:
事件查看器会自动删除旧事件,并且可以通过右键单击日志并选择属性在事件查看器中设置最大量的事件。因此,事件的数量应该是非常重要的,因为它只会丢掉旧的事件。
您可能不应该在这些标注/插件中出现错误。通常,您应该阻止用户启动他们不允许执行的操作。如果您有意不允许用户更新任务,那么我可能会在表单代码中有条件地处理(检查javascript中的权限并使字段只读)。我也理解你是在举例,所以我可能不了解问题的严重程度。
我不知道有什么特别的方法可以防止错误写入日志,这让我感到非常危险,因为你可能会错过一些非常重要的事情。您可以尝试选择常见错误并将其过滤掉来吗?