首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPC服务器不可用

RPC服务器不可用
EN

Stack Overflow用户
提问于 2013-11-18 14:49:19
回答 1查看 4.3K关注 0票数 1

在我的程序中使用Outlook互操作时,我得到了一个间歇性错误。我会让用户时不时地报告这个错误,但是不可能在我的终端上复制。更奇怪的是,如果他们重新启动程序并再试一次,错误就消失了。

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

代码语言:javascript
复制
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;
    }
}

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

代码语言:javascript
复制
    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();
    }

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-18 16:40:10

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

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

正确的解决方法是在获得异常时重新创建olk实例。这可能很难处理,因为它可能是在代码中嵌套时生成的。但是最好不要修复这种情况,因为这暗示了导致崩溃的代码,所以您不想隐藏这个问题。实现一个“金丝雀测试”,在你开始做一些非琐碎的事情之前,先嗅一嗅一个无辜的财产。如果这导致异常,则重新创建实例。做测试,我并不是百分之百地确定旧的olk实例会在你的程序完成时轰炸你的程序。您应该通过使用任务管理器( Task )杀死Outlook.exe来获得一个复制。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20050654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档