2016-10-30 8 views
0

私はwpfとwcf C#アプリケーションの開発に新しく、wcfサービスが参照されるクラスの更新に取り掛かりました。たとえば、ServiceにはtestDbConnectのクラスがあり、iservice.csとservice.csに定義されて実装されているさまざまなサービス操作コントラクト関数があります。 wpfクラスでは、このサービスは参照として追加され、ボタンのクリック操作でサービスが呼び出されると完璧に機能します。このように、私はボタンをクリックしてテストしています。Wcfを参照クラスコードの更新

 Service1Client service = new Service1Client(); 

     if (service.Testdb() == 1) //Testdb is the function in service which is only returning 1 
     { 
      MessageBox.Show("Hello there"); 
     } 

私が直面しています問題、それは完全にサービスを開始し、ボタンのクリックに(こんにちは)メッセージボックスを表示しますが、私もボタンクリック内のコードを更新していたときに、それはまだハローを示すが、メッセージを保ちますコードを更新しません。おそらくプロキシ世代が含まれていますが、私はそれを理解していません。誰かが簡単な言葉で私を説明することができ、それがどのように解決できるか教えてくれればそれは素晴らしいことでしょう。ありがとう

+0

サービスやクライアントで実際にコードを更新する場所はどこですか?更新しようとしているコードを共有できますか? – Rajput

答えて

0

WCFサービスの使用方法に基づいて、サービス参照を更新する必要があります。

int TestDb();のサービスでint Testdb();の名前を変更する必要があるとします。あなたの契約(IService1.cs)に移動し、一致するシグネチャを変更します。

IService1.cs

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    int TestDb(); 
} 

次に、あなたのサービスにアクセスして、あなたの方法を更新:

Service1.cs
public class Service1 : IService1 
{ 
    public int TestDb() 
    { 
     return 1; 
    } 
} 

次に、サーバー側で問題はありませんが、クライアントアプリケーションでサービス参照を更新する必要があります。そのため、プロキシは新しいメソッドを反映していますe。したがって、クライアントアプリケーションでService Referencesフォルダを展開し、ServiceReference1を右クリックするか、サービス参照のノード名を右クリックし、[サービス参照の更新]を選択します。

Updating services references

Visual Studioはサービス参照を更新して、新しい名前でTestDbメソッドを呼び出すことができる必要がありましょう。

希望すると便利です。

+0

こんにちは。あなたの返事をありがとうございました。私はこれを試して、次の例外を取得しました 追加情報:「http://tempuri.org/IService1/InsertTestdb」というアクションのメッセージは、EndpointDispatcherでContractFilterの不一致が原因で受信者で処理できません。これは、契約の不一致(送信者と受信者の間の不一致)または送信者と受信者の間のバインディング/セキュリティの不一致のいずれかが原因である可能性があります。送信者と受信者が同じ契約と同じバインディング(セキュリティ要件、たとえばメッセージ、トランスポート、なしなど)を持っていることを確認します。 –

+0

参照を正しく更新することができます。 VSにエラーがありますか?このエラーは、クライアントとサーバーの契約が異なる可能性があることを示します。 –

+0

見て、あなたのためのサンプルをまとめました。 [見てください](https://github.com/ktamayop/WcfSample)。どのようにこれがあなたのために働くか教えてください。 –

関連する問題