int Add<T>(T c),Client調用成功。int Add<T>(IList<T> list),Server實現同樣返回0。System.NullReferenceException,堆棧指向MethodCall.ResolveMethod。Add2,調用恢復正常。int Add(GameRecordDetail c)/int Add(IList<GameRecordDetail> list),調用正常。同時滿足兩條件時觸發:
Server stack trace: at System.Runtime.Remoting.Messaging.MethodCall.ResolveMethod(Boolean bThrowIfNotResolved) at System.Runtime.Remoting.Messaging.MethodCall..ctor(Object handlerObject, BinaryMethodCallMessage smuggledMsg) at System.Runtime.Serialization.Formatters.Binary.BinaryMethodCall.ReadArray(...) ... at RemotingLib.IComputer.Add[TEntity](TEntity c)
異常發生在反序列化調用消息階段**(ResolveMethod),而非方法執行階段。
Remoting序列化/反序列化機制在處理泛型方法重載**時,無法正確解析MethodBase,導致MethodCall構造失敗。具體可能涉及:
BinaryMethodCallMessage解析邏輯未正確處理泛型重載歧義。AddSingle/AddBatch),最簡單有效。深層修復需修改Remoting底層Formatter/Sink,成本極高,不具備工程可行性。