1

MSFT WCF サンプル ダウンロード ( http://msdn.microsoft.com/en-us/library/ee818238.aspx )に付属する WCF-SecureProfile サンプルを実行できます。

ただし、このサーバー コンポーネントを IIS に移植することはできません。<MakeConnectionBindingElement/>ロードできないというエラーが表示 されます。動作拡張機能が読み込まれていることを考えると、IIS が拡張機能を認識できない理由はわかりませんが、アプリのセルフホスト バージョンは認識できます。ここに画像の説明を入力

簡単に参照できるように、プロジェクトのソースコードを codeplex にアップロードしました。これは、 web.configおよびその他すべてのファイルへの直接リンクです。

ここに画像の説明を入力2

4

1 に答える 1

1

サンプルを入手し、IIS ローカルで実行するようにセットアップしました。この質問と同じ問題は発生しませんでしたが、大きな落とし穴に遭遇しました。IIS でサービスにアクセスすると、次のエラー メッセージが表示されました。

コントラクトには Duplex が必要ですが、Binding 'BasicHttpBinding' は Duplex をサポートしていないか、Duplex をサポートするように適切に構成されていません。

頭を悩ませた後、この問題の原因を見つけました。WCF 4 では、各トランスポートに既定のバインドが割り当てられるようになりました (私はこの機能があまり好きではありません)。HTTP トランスポートの場合、デフォルトのバインディングは basicHttpBinding です。問題は、customBinding 構成がデフォルトのバインディングをオーバーライドしないことです。これにより、WCF は、もちろんサポートされていない basicHttpBinding で二重化を構成しようとします。この問題を解決するには、HTTP の既定のトランスポート マッピングをオフにして、このサービスについて以下に示すようにカスタム バインディングに割り当てます。

    <protocolMapping>
        <clear/> <!-- removes all defaults which you may or may not want. -->
        <!-- If not, use <remove scheme="http" /> -->
        <add scheme="http" binding="customBinding" bindingConfiguration="rspBinding"/>
    </protocolMapping>

これを serviceModel 要素に追加すると、IIS ベースのサービスは問題なく動作しました。

于 2011-05-09T19:09:24.903 に答える