我正在创建一个基于net.tcp的WCF服务来控制我们的一个后端应用程序。在Windows机器上进行开发和测试期间,一切都按预期工作。
但是,当我尝试在同一个Windows框(Mono 2.10.6)或Debian Squeeze(使用Mono 2.10.5)上使用Mono运行相同的应用程序时,我突然在{{1}中获得TypeLoadException
}}
最后,归结为此次调用失败:
ChannelFactory
在另一个程序集中使用controlHost = ChannelFactory<IControlServiceContract>.CreateChannel(
new NetTcpBinding(SecurityMode.None),
new EndpointAddress(endpointAddress)
);
的定义:
IControlServiceContract
直接启动时运行正常(即使用.NET)。
当使用[ServiceContract]
public interface IControlServiceContract
{
[OperationContract(IsOneWay = true)]
void Ping ();
[OperationContract(IsOneWay = true)]
void Shutdown ();
[OperationContract]
int GetCommandCount ();
}
执行时虽然它与这个超级甜蜜堆栈跟踪崩溃:
mono --debug --runtime=v4.0
他的项目中使用的所有程序集都是我们自己的目标框架4.0,核心程序集和log4net 1.2.10 / 2.0.50727。
有没有人知道这可能是什么以及我应该从哪里开始挖掘?
答案 0 :(得分:2)
好吧,如果它适用于.NET而不是Mono,那肯定是一个bug。
我会继续,首先在http://bugzilla.xamarin.com/
提交然后可能会在irc://irc.gnome.org/mono中进行视频群聊,然后戳一下WCF的维护者Atsushi Enomoto(尼克“eno”)来看看他的想法。