3

私はWCFサービスで最初のステップを開始し、WCFサービスから取得したデータを表示する小さなWPFアプリケーションを作成しました。アプリケーションを2つのプロジェクトに分割しました。(WPF)UIを含むプロジェクトと、WCFサービスクライアントを含む2番目のプロジェクトです。

2番目のプロジェクトのapp.configから最初のプロジェクト(もちろん、StartUpプロジェクト)のapp.configにエンドポイント定義をコピーした後、アプリケーションは現在実行されています。

しかし、WCFサービスクライアントを使い始めてから、XAMLデザイナーは機能しなくなりました。常に例外が表示されます。

ServiceModelクライアント構成セクションでコントラクト「MyContract」を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、このコントラクトに一致するエンドポイント要素がクライアント要素で見つからなかったことが原因である可能性があります。

これは、エンドポイント定義を他のapp.configファイルにコピーする前に取得した例外とまったく同じです。したがって、XAMLデザイナーはこの構成を使用しないと思います。この奇妙な動作を修正することは可能ですか?XAMLデザイナがWCFをまったく使用せず(とにかくIMHOを使用するべきではありません)、デフォルトのデータを使用するだけで問題ありません。

RhinoMocksを使用してDesignerModeの場合にWCFサービスクライアントをスタブ化することについてはすでに考えましたが、非同期WCF呼び出しをスタブ化するのは最も簡単な方法ではありません。

何か案は?

4

3 に答える 3

6

問題を回避する方法を見つけました: ViewModel のコンストラクター (メイン ウィンドウの XAML ファイルで DataContext として定義されている) から WCF 通信を行うビジネス オブジェクトで何かを呼び出すと、XAML デザイナーが機能しないようです。

シンプルな

if (DesignerProperties.GetIsInDesignMode(new DependencyObject()))
{
    return;
}

ビジネス オブジェクトにアクセスする前に、XAML デザイナーが再び機能します。

于 2012-12-28T20:47:17.720 に答える
0

また - 逆の作品; つまり、サービス参照を「メイン」の app.config に移動すると、「子」プロジェクトで見つけることができます。

于 2013-11-01T19:09:42.400 に答える