2011-07-30 34 views
2

新しいWCFサービスが作成されています。私は当初、3つの操作しかありませんでした。しかし、しばらくして2つを追加することにしました。この操作は、Microsoftテストクライアントには表示されず、WPFクライアントからサービス参照を追加しようとすると操作の一覧にも表示されません。また、最初の操作の1つをコメントしようとしました。マイクロソフトのテストクライアントには依然として現れており、を呼び出すことができます。私はまた、サービスによって生成されたDLLを削除しようとして、再び再生しました。運がない。 Visual Studioには、削除できるWCFサービスライブラリが保存されている「キャッシュ」がありますか?WCFサービス操作が更新されない

更新:私は、ASP.NET devolopmentサーバーで実行されているサービスを使用しています。

答えて

1

なぜ私は新しいプロジェクトを作成し、問題のあるプロジェクトから操作の定義をコピーして問題が解決しました。マイクロソフトの謎に対する1つのケース

+2

私はこれを「Microsoft Mystery」と呼ぶことはありません。私はこれを「あなたは問題が何であったかを知りませんでしたが、代わりにその問題を解決しました」と呼んでいます。特に、新しいプロジェクトを作成して達成したことの1つは、変更されたコードを実行する開発サーバーの新しいインスタンスを開始したことでした。元のサーバーを再起動すると、問題が解決された可能性があります。 –

+0

また、ASP.NET開発サーバーを再起動しようとしましたが、まだ生成されたコードは非同期に生成されます。さて、プロジェクト全体を比較すると、違うものが見つかるはずですが、率直に言って私はこれに時間がありません。 – Apocatastasis

+1

私は同じ問題を抱えています(生成されたクライアントには表示されません)。私のサービス操作は[FaultContract]属性で装飾されていました。これらの属性を削除すると、クライアントが正しく生成されました。 FaultContractの実装に何か問題があったのか、サービス参照ジェネレータがその属性を気に入らないのか分かりません。私はクライアントを生成した後に属性を復元し、すべてが期待通りに機能します。 – JcFx

0

新しい操作を追加した後で、サービスを更新していることを確認してください。

また、属性が[OperationContract]であることを確認してください。

+0

確かに、エラーが続く。 – Apocatastasis

4

何が起こるかの順序を理解する必要があります。

  1. あなたはそれらの上に[OperationContract]とメソッドを追加する、またはそれらを削除、またはそれらのパラメータや戻り値を変更し、あなたのコードを変更します。
  2. のサービスをビルドし、変更が含まれている.DLLを生成する必要があります。
  3. (これはサーバーに応じて自動的に発生する可能性があります。たとえば、あなたは
  4. 上で実行するために起こっているサーバへの展開変更されたDLLその後、再起動サービス、IISは時にサービスをリサイクルしますしなければならない必要があります
  5. クライアントを更新する必要があります.WCFテストクライアント、または「サービス参照の追加」または同等のものを更新する必要があります。

最後に、新しいメタデータまたはWSDLのサービスにリクエストを送信する効果があります。 、次にのみ、クライアントはサービスの定義に対して行った変更を確認できます。

+0

すべての条件が満たされても、エラーは残ります。 – Apocatastasis

+0

ありがとう、あなたは私の問題を@ジョンに解決しました! –

+0

同じ問題は、stackoverflowに行く前に何度も何度も何もしませんでした –

0

私たちが発見したことの1つは、dllをデプロイするとき、ビン内にある必要があり、デバッグまたはリリースフォルダに常駐できないことです。私にとって

0

が働いた:ちょうどWCFのプロジェクトを再構築

0

あなたはここで

class Test 
    { 
     static void Main() 
     { 
      LocationClient client = new LocationClient(); 

      // Use the 'client' variable to call operations on the service. 

      // Always close the client. 
      client.Close(); 
     } 
    } 
0

あなたのサービスを示すソリューションとして、クライアント側 でクライアント接続を閉じました:

あなたのDataContractがないことを確認してください列挙型を含まない (代わりに整数を使用できます)

必ずpr IISであなたのディスク上の解決策ではなく、DLL内のoject

  1. あなたの「ビン」と「OBJ」フォルダ
  2. を削除し再コンパイル
  3. は、IISでアプリケーションプール
  4. をリサイクルあなたのサービスを再起動します
  5. IISで
  6. あなたのサービスを "参照"

=>あなたはそれを

を得ました
関連する問題