应用程序挂起而不是抛出异常

时间:2009-09-28 18:51:42

标签: .net installation clickonce privileges

我有一个 Winform App ,我使用 ClickOnce 进行部署,在我们<的任何系统上安装并为我工作(我的 UserLogin ) em>域但不会启动常规域用户

它不会产生任何类型的任何错误无限期地停留在那里。 曾经工作而且我对于现在无法正常工作的改变感到茫然。

我完全不知道该寻找什么。我尝试使用 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
        {
        }
    }

1 个答案:

答案 0 :(得分:1)

帕拉丁,你必须更好地诊断它。然后你可能会自己找到它。所以我提出的问题是:“如何找出发生了什么?”

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

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

  3. 应用程序加载了吗?使用TaskManager。

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

  5. 中观看输出