2017-09-06 13 views
2

私は、実行中の他のアプリケーションから情報を受け取ることができるアプリケーションをWCF経由で作成しようとしています。 別のクラスにvoidメソッドを設定し、インターフェイスを作成してサービスをホストしました。C#クライアントアプリケーションのメソッドをホストするメソッド

私のホストアプリケーションでは、次の方法があります。クライアントで

public Class ReceivingMethods : IReceivingMethods 
{ 
    Public void HelloWorld(string text) 
    { 
     MessageBox.Show(text); 
    } 
} 

[ServiceContract] 
interface iReceivingMethods 
{ 
    [OperationContract] 
    void HelloWorld(string text); 
} 

、私はこれやりたい:

HostService client = new HostService(); 
client.HelloWorld("Hello World"); 
client.close(); 

をしかし、それは動作しません、代わりに私はこれをしなければなりません。

HostService client = new HostService(); 
HelloWorld hi = new HelloWorld(); 
hi.text = "Hello World"; 
client.HelloWorld(hi); 
client.close(); 

は私がではなく、このアプリケーションに、それは以前にアプリケーション/ ASPの組み合わせで元のように動作するように得ていると私は2つのアプリケーション間の設定の違いを見つけることができません。

これまでのようにWCFセットアップで必要なものを教えてもらえますか?

+0

wcfのABC設定ファイルも親切に投稿してください。 –

答えて

0

は、私がどこかに問題を見つけ判明(AddressBindingContractファイルのサービス名)のServiceContractインターフェイスを実装しているクラスのオブジェクトを作成する必要があります。 クライアントサービス参照を「常にメッセージ契約を生成する」ように設定しました これをオフにしてサービス参照を更新すると、問題が解決しました。

解決策が見つかりました。 https://social.msdn.microsoft.com/Forums/en-US/b9655eeb-cdbb-4703-87d8-00deac340173/add-service-reference-creates-message-contracts-requestresponse-objects-with-always-generate?forum=wcf

0
HostService client = new HostService(); 

エンドポイントまたは使用するクラスオブジェクトを指定していません。通常、servicehostクラスは、次のような特定のエンドポイントのオブジェクトを作成する必要があります。

 using(System.ServiceModel.ServiceHost host = 
new System.ServiceModel.ServiceHost(typeof(ReceivingMethodsnamespace.ReceivingMethods))) 
      { 
       host.Open(); 
       Console.WriteLine("Host started @ " + DateTime.Now.ToString()); 
       Console.ReadLine(); 
      } 

は、一般的にhostserviceは

+0

こんにちはHameed、提案のおかげで、Servicehost(typeof(ReceivingMtehods)は既にコードの一部でした)。 –

関連する問題