1

WCFサービスを使用するSilverlightアプリケーションの開発を担当しています。サービスは、WsHttpBindingを使用してエンドポイントのみを公開しました。

私が理解したように、Silverlightアプリケーションでこのサービスを利用することは不可能です(WsHttpBindingには特別なオペレーティングシステムのサポートが必要ですか?)。

サービスへの各呼び出しには、パラメーターとしてユーザー資格情報が含まれています。

生成されたサービスの構成が.Net4アプリケーションを探す方法は次のとおりです。

<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="WSHttpBinding_IScheduleService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="blahblah/Service.svc/ws"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IScheduleService"
            contract="ScheduleService.IScheduleService" name="WSHttpBinding_IScheduleService">
            <identity>
                <dns value="localhost" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

長い紹介で申し訳ありませんが、質問があります。

WCFサービスへの接続を保護するためのSilverlightの世界での一般的なアプローチは何ですか?Silverlightクライアントが使用できるようにサービスを変更するにはどうすればよいですか?

4

1 に答える 1

2

最も一般的なアプローチは、この設定で行うように、トランスポートセキュリティ(ssl)を使用することです。ここでの唯一の問題は、wshttpbindingがクライアントのSOAPメッセージから、silverlightがサポートしていない可能性のあるws-addressingヘッダー(フィドラーまたはwcfロギングでチェックアウト)を含むことを期待していることです。

サービスをbasicHttpBindingに変更できるのであれば、それが最適です。それ以外の場合でも実行できますが、ヘッダーを手動でsoapメッセージにプッシュする必要があります。動作する石鹸クライアント(winforms)を作成し、送信する石鹸がどのように見えるかを確認します。次に、Silverlightのメッセージインスペクターを使用して追加します。

于 2012-05-21T09:30:27.217 に答える