运行时上下文: WCF服务使用Mono在Linux上运行的WSDualHttpBinding。 我使用app.config,创建一个使用了WSDualHttpBinding的EndPoint
app.config for service(partial)
<endpoint address="http://192.168.0.101:8889"
binding="wsDualHttpBinding" bindingConfiguration="wsDualHttp_Binding"
contract="DynIPServiceContract.IDynIPService" />
服务代码:
static void Main(string[] args)
{
try
{
ServiceHost sh = new ServiceHost(typeof(DynIPService.DynIPService));
sh.Open();
foreach (var ep in sh.Description.Endpoints)
{
Console.WriteLine("Address: {0}, ListenUri: {1}, ListenUriMode: {2} ", ep.Address, ep.ListenUri, ep.ListenUriMode);
}
Console.WriteLine("Service is running");
}
catch (Exception ex)
{
Console.WriteLine("Error:" + ex.Message);
throw;
}
finally
{
Console.ReadKey();
}
}
例外: 属性'textEncoding'的默认值与属性本身的类型不同:预期的System.Text.Encoding但是System.String (关于详细信息,请查看异常快照)
答案 0 :(得分:1)
好吧,我只是快速查看代码,该异常实际上应该是您遇到的最少问题; - )
真正的问题是Mono尚不支持WSDualHttpBinding。
CreateBindingElements()
是System.ServiceModel.Channels.Binding
中一个重要的抽象方法,必须通过绑定来实现。
mcs/class/System.ServiceModel/System.ServiceModel/WSDualHttpBinding.cs
上次在2008年进行了更改,它只是抛出一个NotImplementedException
:
我必须承认我以前也没有在Windows上使用过WSDualHttpBinding,所以我不知道它正在使用哪些绑定元素(以及它们是否已经在Mono中实现)。这些绑定元素提供了核心功能,因此很难说实现此绑定需要多长时间。