4个生产服务器中的一个偶尔产生大量错误声明:
此代理不支持方法RunRules,如果方法未使用OperationContractAttribute标记,或者接口类型未使用ServiceContractAttribute标记,则会发生这种情况。
方法“RunRules”是wcf [ServiceContract]接口中的方法之一,它被标记为[OperationContract]。
在此错误之前,在同一方法中,偶尔会通过城堡容器获得错误的服务。在我输入更多日志信息以确定原因之后,它突变为当前错误。
这是一个错误发生的Web服务,它会在发生这种情况时尝试通过wcf端点调用Windows服务。这只发生在一台特定的机器上。频率约为每周一次或两周。一旦web服务回收(3小时),错误就会停止。
对我而言,它几乎就像腐败的vtable。只是想知道,你会如何处理这个问题?讨厌要求IT人员在没有可靠证据的情况下开始重新映像机器。
谢谢!
答案 0 :(得分:0)
这样的抽象魔术错误没有简单的答案,所以尝试记录整个调用堆栈,特别是内部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并尝试分析哪个状态会导致具体的执行流程,最终会导致异常。
如果您能够记录callstack - 请分享,以便我也可以检查它。