Zhe*_*Lee 9 wcf production castle-windsor wcffacility
4个生产服务器中的一个偶尔会产生大量错误,声称:
此代理不支持方法RunRules,如果方法未使用OperationContractAttribute标记,或者接口类型未使用ServiceContractAttribute标记,则会发生这种情况.
方法"RunRules"是wcf [ServiceContract]接口中的方法之一,它被标记为[OperationContract].
在此错误之前,在同一方法中,偶尔会通过城堡容器获得错误的服务.在我输入更多日志信息以确定原因之后,它突变为当前错误.
这是一个错误发生的Web服务,它会在发生这种情况时尝试通过wcf端点调用Windows服务.这只发生在一台特定的机器上.频率约为每周一次或两周.一旦web服务的回收发生(3小时),错误就会停止.
对我而言,它几乎就像腐败的vtable.只是想知道,你会如何处理这个问题?讨厌要求IT人员在没有可靠证据的情况下开始重新对机器进行成像.
谢谢!
对于这种抽象的神奇错误没有简单的答案,因此尝试记录整个调用堆栈,尤其是内部CastleDLL 调用,如果标准异常不包含如此深层的调用堆栈信息 - 使用反射。
// 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;
Run Code Online (Sandbox Code Playgroud)
然后使用 ILSpy 等实用程序反汇编 Castle DLL 并尝试分析哪种状态导致具体的执行流程,最终导致异常。
如果您能够记录调用堆栈 - 请分享,以便我也能够检查它。
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |