2

皆さんに挨拶します。MVCアプリで外部サービスを参照する必要があります。

このサービスを使用して、クライアントの1つが使用を要求した認証トークンを検証しています。

古いプロジェクトをMVCに移植しています。Web参照を追加しました。

構成は次のように生成されました:

<system.serviceModel>
<bindings>
    <basicHttpBinding>
        <binding name="ExternalServicesSoap" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
            maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
            useDefaultWebProxy="true">
            <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
            <security mode="None">
                <transport clientCredentialType="None" proxyCredentialType="None"
                    realm="" />
                <message clientCredentialType="UserName" algorithmSuite="Default" />
            </security>
        </binding>
    </basicHttpBinding>
</bindings>
<client>
    <endpoint address="http://myapps.test.com/ExternalServices/ExternalServices.asmx"
        binding="basicHttpBinding" bindingConfiguration="ExternalServicesSoap"
        contract="AssertionService.ExternalServicesSoap" name="ExternalServicesSoap" />
</client>

古いASP.NETの世界では、外部サービス参照で定義されたアサーションオブジェクトを使用して、参照している特定のサービスに対して次のことを行うことができました。

        var service = new ExternalServices();
        Assertion assertion = service.Validate(Id);
        if(assertion.Valid){}

これは、MVCプロジェクトの正確なケースではないようです。WCFを使用しているようです。MVCの世界でこれに適切にアプローチしているかどうかはわかりません。

使用する必要があるのは、ExternalServiesSoapインターフェイスまたはExternalServicesSoapChannelインターフェイスだけです。ASP.Netの世界のようにAssertionオブジェクトを返すものはありません。どちらにもValidateメソッドがありますが、ValidateAssertionResponseを返します。応答オブジェクトには有用なプロパティがありません。ただの応答体。Assertionクラスには引き続きアクセスできますが、どのインターフェイスメソッドからも返されないようです。

誰かがこれらのインターフェースの1つを適切に使用する方法を手伝ってくれますか?

ありがとう

4

1 に答える 1

7

サービス参照を追加するのではなく、Web 参照を追加します。プロジェクトを右クリックし、[サービス参照の追加...] を選択します。[サービス参照の追加] ダイアログで、[詳細設定] をクリックし、[Web 参照の追加] をクリックします。これにより、ASMX ベースのサービスでの使用に適したプロキシが生成されます。

于 2011-11-23T16:18:22.143 に答える