1

ランタイムコンテキスト: Linux上でMonoによって実行されているWSDualHttpBindingを使用するWCFサービス。app.configを使用し、WSDualHttpBindingを使用してEndPointを作成します

app.config for service(部分的)

 <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

さて、私はコードをざっと見たところ、その例外は実際にはあなたの問題の中で最も少ないはずです;-)

本当の問題は、WSDualHttpBindingがMonoでまだサポートされていないことです。

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 に答える