0

我有一个使用ClickOnce部署的Winform应用程序,它可以在我们域中的任何系统上安装并为我(我的UserLogin )工作,但不会为普通的域用户启动。

它不会产生任何类型的错误,只是无限期地坐在那里。它曾经可以工作,但我不知道发生了什么变化,现在它不起作用了。

我完全不知道要寻找什么。我尝试使用DomainUser并将它们提升到DomainAdmin(像我一样),但没有任何改变。我知道这有点含糊,但我正在寻找人们可能对此有任何见解。

如何排除故障?
我应该在哪里寻找?

任何事情都会受到赞赏。


我发现是什么导致了“挂起”,但我仍然不明白为什么。

            try
        {
            HUD.CurrentUserRole = new ConnectBLL.BLL.RoleAccess(HUD.CurrentUser);
            sbrHUD_SecureRole.Text += " " + HUD.CurrentUserRole.RoleDescription;
        }
        catch (Exception exception)
        {
            exception.LogError(this);
        }

我的测试用户 Malcolm Reynolds 没有 RoleAccess() 返回的角色。我不明白为什么它挂在那里而不是抛出错误。

LogError是一种扩展方法,可将异常通过电子邮件发送到我的邮箱,并以更用户友好的方式显示错误。

        public static void LogError(this Exception exception, DevExpress.XtraEditors.XtraForm whichForm)
    {
        var fileName = GetDesktopImage(whichForm);

        SendExceptionMail(exception, fileName);

        ExceptionMessageBox box = new ExceptionMessageBox(exception);
        box.Show(whichForm);
    }

    private static void SendExceptionMail(Exception exception, String fileName)
    {
        try
        {
            SmtpClient smtpClient = new SmtpClient("WWCMAIL");
            var innerExceptionMessage = String.Empty;
            if (exception.InnerException != null)
            {
                innerExceptionMessage = exception.InnerException.Message;
            }
            var stackTrace = exception.StackTrace;
            var source = exception.Source;

            MailMessage message = new MailMessage
                {
                    From = new MailAddress("MATRIX@wwCares.org"),
                    Subject = Environment.UserName + ": MATRIX Application Error",
                    Body =
                        "***THE EXCEPTION***\n" + exception.Message + "\n\n***THE INNER EXCEPTION***\n" +
                        innerExceptionMessage + "\n\n***THE STACK TRACE***\n" + stackTrace + "\n\n***THE SOURCE***\n" + source
                };

            Attachment attachment = new Attachment(fileName);
            message.Attachments.Add(attachment);

            message.To.Add("PSchaller@wwCares.org");
            message.To.Add("HDesk@wwCares.org");
            smtpClient.Send(message);
        }
        catch
        {
        }
    }
4

1 回答 1

1

圣骑士,你将不得不更好地诊断它。然后你可能会自己找到它。所以我认为这个问题是:“如何找出正在发生的事情?”

  1. 消除一些可能的课程。重新安装(由域用户使用)。您没有尝试运行为(由)其他用户安装的内容,是吗?

  2. 找到(稍微隐藏的)安装文件夹并验证所有程序集都在那里。

  3. 应用程序加载了吗?使用任务管理器。

  4. 如果加载,请开始使用 Sytem.Diagnostics.Debug.Print() 添加诊断日志记录。您可以在DebugView中观看输出。

于 2009-09-28T20:11:05.493 回答