RPC 服务器不可用

Posted

技术标签:

【中文标题】RPC 服务器不可用【英文标题】:RPC server is unavailable 【发布时间】:2013-11-18 14:49:19 【问题描述】:

在我的程序中使用 Outlook 互操作时出现间歇性错误。我时不时地让用户报告此错误,但我无法重现。更奇怪的是,如果他们重新启动程序再试一次,错误就消失了。

这是我用来获取 Outlook 引用的代码。

public class CommonStuff

    public static void Initialize()
    
        olk = new Microsoft.Office.Interop.Outlook.Application();
        olk.ItemSend += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemSendEventHandler(OutlookInterop_ItemSend);
    

    public static Microsoft.Office.Interop.Outlook.Application GetOutlook()
    
        if (Process.GetProcessesByName("OUTLOOK").Count() == 0) //previous attempt at fixing this issue, and i'm not sure if i even need this
        
            olk = new Microsoft.Office.Interop.Outlook.Application();
        
        return olk;
    

以及发送实际电子邮件时使用的代码。

    public void SendEmail()
    
        Microsoft.Office.Interop.Outlook.MailItem eMail = (Microsoft.Office.Interop.Outlook.MailItem)CommonStuff.GetOutlookApp().CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
        eMail.Subject = String.Format("Subject");
        eMail.To = "email@things.com";
        eMail.Companies = "Company";
        eMail.Body = "blah blah blah";
        eMail.Attachments.Add(GetCrystalReportPDF());
        ((Microsoft.Office.Interop.Outlook._MailItem)eMail).Display();
    

不幸的是,我不知道错误到底发生在哪里,因为我无法重现该错误。有人知道发生了什么吗?

【问题讨论】:

我没有解决方案,但我很同情......因为我最近在另一个上下文中遇到了完全相同的错误。本文将提供一些见解:social.technet.microsoft.com/wiki/contents/articles/… 至少,关于使用wireshark 检查网络跟踪的部分对我很有用... 【参考方案1】:

这是进程互操作的典型问题,您还可以排除其他进程的所有错误和崩溃问题。 “RPC 服务器不可用”是一个非常普遍的错误,仅表示“进程不再工作”。有几个简单的原因,它可能只是崩溃或用户终止了它。 Outlook 通常是个麻烦制造者,它并不是 Office 中最稳定的程序。

您使用 Process.GetProcessesByName() 的解决方法是一个公平的尝试,但它不太可能奏效。用户通常已经运行自己使用的 Outlook,您也会看到该实例。您无法判断您看到的该进程是您启动并与您的 olk 实例匹配的进程,还是用户正在查看的进程。

正确的解决方法是在遇到异常时重新创建 olk 实例。这可能很难处理,因为它可能是在您深深嵌套在代码中时生成的。但最好不要修复这种情况,因为这暗示你的代码会导致崩溃,你不想隐藏这个问题。实施“金丝雀测试”,在你开始做一些不平凡的事情之前嗅探一个无辜的财产。如果这导致异常,则重新创建实例。对此进行测试,我不能 100% 确定旧的 olk 实例在完成时会轰炸你的程序。你应该通过任务管理器杀死 Outlook.exe 来获得重现。

【讨论】:

以上是关于RPC 服务器不可用的主要内容,如果未能解决你的问题,请参考以下文章

windows无法启动windows Audio 错误代码:1722RPC服务器不可用

不能共享,错误1722:RPC服务器不可用,怎样修复?

请问RPC服务器不可用是啥意思?

无法安装打印机,说RPC服务器不可用是怎么回事?

电脑的rpc服务器不可用,而且还关机和重启不了,桌面界面也进不去,现在只能呆在锁屏界面,这是出了什?

紧急:win32 Error.code:1722.RPC 服务器不可用!是怎么回事,有知道的麻烦给知道一下,多谢!