Значение / причина исключения RPC «Интерфейсы не экспортированы». - PullRequest
1 голос
/ 05 сентября 2008

У нас довольно стандартное клиент-серверное приложение, созданное с использованием MS RPC. И клиент, и сервер реализованы на C ++. Клиент устанавливает сеанс на сервер, затем совершает повторные вызовы в течение определенного периода времени, прежде чем окончательно закрыть сеанс.

Однако периодически, особенно в условиях большой нагрузки, мы видим исключение RPC с кодом 1754: RPC_S_NOTHING_TO_EXPORT.

Похоже, это происходит в середине сеанса. Пользователь некоторое время входит в систему, совершая успешные вызовы, затем один из вызовов необъяснимым образом возвращает эту ошибку. Насколько мы можем судить, сервер не получает никаких признаков того, что что-то пошло не так, и он определенно не видит вызов, сделанный клиентом.

Код ошибки, по-видимому, также имеет постоянное значение. При повторной попытке клиента соединение не работает. Однако, если пользователь имеет несколько активных сеансов одновременно между одним и тем же клиентом и сервером, другие соединения не затрагиваются.

По сути, у меня есть два вопроса:

  1. Кто-нибудь знает, что означает RPC_S_NOTHING_TO_EXPORT? Документация MSDN просто гласит: "No interfaces have been exported." ... А? До этого момента сессия работала нормально для многочисленных экземпляров одного и того же вызова ...

  2. У кого-нибудь есть идеи относительно того, как определить реальную проблему? Примечание : Захват сетевого трафика - это то, чего мы бы лучше избегали, если это возможно, поскольку проблема носит достаточно эпизодический характер, поэтому мы, вероятно, пройдем несколько гигабайт трафика перед тем, как столкнуться с вхождением.

1 Ответ

1 голос
/ 09 сентября 2008

Захват сетевого трафика был бы одним из лучших способов решения этой проблемы. Если вы не можете этого сделать, можете ли вы сбросить клиентский процесс и выполнить отладку с помощью WinDBG или Visual Studio? Возможно, сравнить дамп при нормальной работе с состоянием ошибки?

...