예외를 비 직렬화하는 데 문제가 있습니다. 네트워크를 통해 예외를 보내는 것은 나쁜 습관이라는 것을 충분히 알고 있지만, 현재 설치에는 시스템 통합을 위해이 작업이 필요합니다.바이너리 포맷터를 사용하여 비 직렬화 한 후 Exception.TargetSite가 null입니다.
서버 시스템은 .net 4 wcf 서비스이고 호출자는 .4 표준 웹 참조를 사용하여 .4를 호출하는 .net 2입니다.
서버 측은 예외를 serialize하고 Base64 문자열로 인코딩합니다. 수신 측
var formatter = new BinaryFormatter();
messageChannel.ServerException = (Exception)
formatter.Deserialize(new MemoryStream(Convert.FromBase64String(base64string)));
모두에
var formatter = new BinaryFormatter();
var mem = new MemoryStream();
formatter.Serialize(mem, ex);
EncodedException = Convert.ToBase64String(mem.ToArray());
는 TargetSite 제외하고있다.
힌트를 주시면 감사하겠습니다.
감사
요한