0

Castle.Windsor と WcfFacility についてはまだ道を模索していますが、これには頭を悩ませました。私のリポジトリでその依存関係を確認する場所に、Windsor に WCF クライアントを挿入してもらいたいと思っています。

Visual Studio にサービス参照を追加し、ブートストラップ コードに以下を追加しました。

  container.AddFacility<WcfFacility>();
    container.Register(
        Component.For<IServiceContract>()
        .AsWcfClient(
            DefaultClientModel.On(
                WcfEndpoint.FromConfiguration("MyEndpoint")
                )
            )
        );

私の web.config には、<client>それに応じて名前が付けられたエンドポイントを持つセクションが含まれています。

<client>
  <endpoint address="http://localhost:63988/MyService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IServiceContract"
    contract="IServiceContract"
    name="MyEndpoint" />
</client>

アプリを実行すると、YSOD が表示されます。

ServiceModel クライアント構成セクションで、名前が「service」でコントラクトが「IServiceContract」のエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、この名前に一致するエンドポイント要素が client 要素に見つからなかったためである可能性があります。

かなり自明ですが、なぜ「service」という名前の要素を探しているのですか?私の要素は「MyEndpoint」という名前で、メソッドに正しく渡しましたFromConfigurationか?

web.config を更新して name 属性を「MyEndpoint」から「service」に変更すると、YSOD がなくなり、ページが機能します。

<client>
  <!-- Changing the name attribute to "service" works? -->
  <endpoint address="http://localhost:63988/MyService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IServiceContract"
    contract="IServiceContract"
    name="service" />
</client>

私が付けたエンドポイント名を施設が無視しているように見えますか?

または (より可能性が高い) サービスを正しく登録しておらず、施設が名前付けのフォールバックを使用しています。

編集

私のエンドポイント名属性「サービス」でなければならないようです! 私が試したすべてのテストで、属性が他の値の場合、常に同じエラーが発生します - これはバグですか?

乾杯

4

1 に答える 1

0

OK - この問題をなんとか乗り越えました。

私は 1 つの MVC と 1 つの WCF の簡単なテスト ハーネスを作成し、WcfFacility を問題なく使用しました。

既存のコードベースとリファクタリングを使用して WcfFacility を使用していたので、元の変更をビニングしてやり直しました。今回は何の問題もありませんでした。

要素内の web.config でいくつかの重複を見逃していたに違いないと<system.serviceModel>思いますが、大丈夫だと誓っています!

乾杯

于 2013-03-08T08:22:18.100 に答える