wsDualhttpbinding在Mono上运行的例外情况

时间:2012-12-04 01:25:47

标签: wcf mono wsdualhttpbinding

运行时上下文: 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 (关于详细信息,请查看异常快照) enter image description here

1 个答案:

答案 0 :(得分:1)

好吧,我只是快速查看代码,该异常实际上应该是您遇到的最少问题; - )

真正的问题是Mono尚不支持WSDualHttpBinding。

CreateBindingElements()System.ServiceModel.Channels.Binding中一个重要的抽象方法,必须通过绑定来实现。

mcs/class/System.ServiceModel/System.ServiceModel/WSDualHttpBinding.cs上次在2008年进行了更改,它只是抛出一个NotImplementedException

https://github.com/mono/mono/blob/master/mcs/class/System.ServiceModel/System.ServiceModel/WSDualHttpBinding.cs#L140

我必须承认我以前也没有在Windows上使用过WSDualHttpBinding,所以我不知道它正在使用哪些绑定元素(以及它们是否已经在Mono中实现)。这些绑定元素提供了核心功能,因此很难说实现此绑定需要多长时间。