Случайная ошибка на рабочем сервере: метод <name>не поддерживается на этом прокси - PullRequest
9 голосов
/ 26 августа 2010

Один из 4 производственных серверов время от времени генерирует тонны ошибок:

Метод RunRules не поддерживается на этом прокси-сервере, это может произойти, если метод не помечен с помощью OperationContractAttribute или если тип интерфейсане помечен ServiceContractAttribute.

Метод "RunRules" является одним из методов в интерфейсе wcf [ServiceContract] и помечен как [OperationContract].

До этой ошибки в той жеметод, иногда он получит неправильный сервис через контейнер замка.После того, как я поместил больше информации о регистрации, чтобы определить точную причину, она превратилась в текущую ошибку.

Это веб-служба, из-за которой возникает ошибка, она пытается вызвать службу Windows через конечную точку wcf, когда это происходит.И это происходит только на одной конкретной машине.Частота составляет примерно один раз в неделю или 2 недели.Когда происходит перезапуск веб-сервиса (3 часа), ошибка прекращается.

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

Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2012

Нет простого ответа на такую ​​абстрактную магическую ошибку, поэтому попробуйте протоколировать весь стек вызовов, особенно внутренние Castle вызовы DLL, если стандартное исключение не содержит такой глубокой информации о стеке вызовов - используйте отражение.

// use this in loop incrementing levelIndex up to st.FrameCount
// to grab all possible callstack entries
StackTrace st = new StackTrace();
st.GetFrame(levelIndex).GetMethod().Name;

Затем с помощью утилиты, подобной ILSpy, разберите Castle DLL и попробуйте проанализировать, какое состояние вызывает конкретный поток выполнения, который заканчивается исключением, которое вы получили.

Если вы можете регистрировать стек вызовов - пожалуйста, поделитесь, чтобы я также мог проверить его.

...