System.Runtime.InteropServices.COMException (0x800706BE) when getting contact.LastName

Andrei picture Andrei · Dec 17, 2010 · Viewed 28k times · Source

Some of our users are getting this exception sometimes (not for every contact):

System.Runtime.InteropServices.COMException (0x800706BE): 
   The remote procedure call failed. (Exception from HRESULT: 0x800706BE)
   at Microsoft.Office.Interop.Outlook._ContactItem.get_LastName()

This happens when we're trying to get the last name of a contact (of the ContactItem type).

Does anybody know what the problem is?

Any help would be appreciated. Thanks!

Answer

Hans Passant picture Hans Passant · Dec 17, 2010

It is a Windows error, facility code 7. The last word gives the Windows error, 0x6be == 1726:

// MessageId: RPC_S_CALL_FAILED
//
// MessageText:
//
// The remote procedure call failed.
//
#define RPC_S_CALL_FAILED                1726L

Interop with Office programs like Outlook happens through out-of-process COM. RPC is the low-level Remote Procedure Call mechanism. There are several reasons for such a remote call to fail. Both the error code and the error name google well.

The simplest explanation is just that Outlook fell over. That happens. The advantage of in-process interop is that when the host program crashes then it will take out your code as well. Not in an out-of-process scenario, you just get a hard to diagnose error. Ask your customer's IT staff to use their typical Office troubleshooting strategies.