我有两个应用程序,A和B,并希望在两者之间发送数据。这是我的情景:
这一切都运作良好,甚至可以显示我的联系正确。但是,当我看到B中的数据时,我看不到它,这意味着A没有正确地将数据发送到B。
当我查看调用堆栈时,我看到:
[Native to Managed Transition]
[Managed to Native Transition]
mscorlib.dll!System.RuntimeType.CreateInstanceSlow(bool publicOnly, bool skipCheckThis, bool fillCache, ref System.Threading.StackCrawlMark stackMark)
mscorlib.dll!System.Activator.CreateInstance(System.Type type, bool nonPublic)
mscorlib.dll!System.Runtime.Remoting.RemotingConfigHandler.RemotingConfigInfo.StartupWellKnownObject(string asmName, string svrTypeName, string URI, System.Runtime.Remoting.WellKnownObjectMode mode, bool fReplace)
mscorlib.dll!System.Runtime.Remoting.RemotingConfigHandler.RemotingConfigInfo.StartupWellKnownObject(string URI)
mscorlib.dll!System.Runtime.Remoting.RemotingConfigHandler.CreateWellKnownObject(string uri)
...
这个调用堆栈,以及在我的两个服务的默认构造函数上设置断点,表明正在创建新实例,这意味着连接确实正确发生,但是正在创建随机实例。
有关如何阻止创建这些随机实例的任何想法,以便我的真实A实例可以发送我真实的B实例数据吗?注意:在我的两个服务中,我已经包括:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
答案 0 :(得分:0)
我的解决方案是以下各项的混合:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
在两个应用程序中设置[Serializable]