皆さんに挨拶します。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つを適切に使用する方法を手伝ってくれますか?
ありがとう