0

2 つのプロジェクトで構成された WCF サービスがあります。

  1. WCF サービス ライブラリ
  2. WCF Web アプリケーション

最初のプロジェクトには、MyService によって実装されたサービス呼び出し IMyService があります。これは WS バインディングを使用して構成されており、このプロジェクトで F5 キーを押すと、WCFTestClient が WS バインディングをレンダリングします。Web アプリには、同じ名前のこのマークアップを含む .svc ファイルがあります

 <%@ ServiceHost Language="C#" Debug="true" Service="[Namespace].MyService" %>

このプロジェクトで F5 キーを押すと、BasicHttpBinding がレンダリングされます。クライアントでも同じ。なんで?

4

3 に答える 3

2

WCF サービス ライブラリ プロジェクトがデフォルトで app.config を作成しWSHttpBinding、デフォルト サービスに使用されることを確認しました。WCFTestClient を実行すると、常にこのローカル構成が使用されます。WCFTestClient を使用して追加のサービスをテストする場合は、その構成をこの構成に追加する必要があります。この構成は、他の目的で使用されることはありません。

WCF サービス アプリケーションは web.config を使用します。WCF 4.0 では、定義済みの条件に基づいてエンドポイントを追加する単純化された構成を使用します。デフォルトではBasicHttpBinding、HTTP 経由で公開されているすべてのサービスに共通のエンドポイントを追加しますServiceHostFactory

于 2011-01-17T22:12:08.067 に答える
0

構成ファイルはどのように構成されていますか? wshttpbinding を使用するようにエンドポイントを構成する場合は、これを使用する必要があります。

ここにコードを追加していただけませんか (構成ファイルからのバインディングとエンドポイントの詳細を含む)。

ありがとう、ロベルト・ロペス。

于 2011-01-17T22:00:18.007 に答える
0

元の質問の提起が非常に不十分だったと思います。満足のいく回答を得るには、すべての詳細を明確に述べる必要があります。

最初に、どのバージョンの Visual Studio を使用していますか? 何も言われていないので、最新バージョンの VS2010 SP1 だと思います。

2 つのプロジェクトを持つビジュアル スタジオ ソリューションがあるとします。1 つは WCF サービス ライブラリ、もう 1 つは WCF アプリケーションであり、どちらも手動で調整することなく既定のプロジェクト テンプレートを使用して作成されます。

  • WCF サービス ライブラリには、次の行を含む app.config ファイルがあります。

つまり、Visual Studio 2010 (SP1) は、既定で WCF サービス ライブラリ プロジェクトに wsHttpBinding を使用します。

  • ただし、WCF サービス アプリケーション プロジェクトには、明示的なエンドポイント定義を含まない web.config ファイルがあります。この場合、使用される既定のエンドポイント バインディングは basicHttpBinding です。

OPは「このプロジェクトでF5を押したとき....」と言っていましたが、これは非常に誤解を招く声明です. 「プロジェクトで F5 を押す」とはどういう意味ですか? ソリューション ツリーでプロジェクト ノードを選択してから F5 キーを押したということですか? その場合、何が起こるかは常に、ソリューションでスタートアップ プロジェクトとして設定されているプロジェクトによって異なります (Visual Studio UI で現在選択されているプロジェクト ノードではありません)。

WCF サービス アプリケーション プロジェクトがスタートアップ プロジェクトの場合、F5 キーを押しても WCF テスト クライアントは実行されず、プロジェクトのフォルダーが IE に表示されます。

WCF サービス ライブラリ プロジェクトがスタートアップ プロジェクトである場合、WCF テスト クライアントが実行されます。これは、プロジェクトのプロパティ ウィンドウのデバッグ セクションで、開始オプションが既定で次のようになっているためです: /client:"WcfTestClient 。EXE"

于 2011-11-25T04:20:58.653 に答える