1

运行时上下文: 使用 WSDualHttpBinding 在 Linux 上由 Mono 运行的 WCF 服务。我使用 app.config ,创建一个使用 WSDualHttpBinding 的 EndPoint

服务的 app.config(部分)

 <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(关于详细信息,请查看异常快照) 在此处输入图像描述

4

1 回答 1

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 中实现)。这些绑定元素提供了核心功能,所以很难说实现这个绑定需要多长时间。

于 2012-12-04T19:02:48.237 回答