0

ASP.NET MVC 4 サイト (既にパッシブ STS エンドポイントを正常にホストしています) でアクティブ STS エンドポイントをホストしようとしています。何らかの理由で、WCF ランタイムがサービス URI への呼び出しを "処理" していないようです。

私の RouteConfig.cs ファイルには、次のものがあります。

routes.Add(new ServiceRoute("tokens", new MyTokenServiceHostFactory(), typeof(MyTokenServiceConfiguration)));

これは、.svc ファイルを使用せずにサービスをホストする正しい方法だと思います。私のweb.configファイルには、これがあります:

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
    <!--(behaviors etc)-->
    <services>
        <service name="System.ServiceModel.Security.WSTrustServiceContract">
            <endpoint address="" binding="ws2007HttpBinding" contract="System.ServiceModel.Security.IWSTrust13SyncContract"/>
        </service>
    </services>
</system.serviceModel>

この構成の塊は、サービスを自己ホストするためにうまく使用できます。私が変更したのは、エンドポイントのアドレスだけです。

サービスを呼び出そうとすると、次のようになります。

System.ServiceModel.Security.MessageSecurityException: 相手から、セキュリティで保護されていない、または正しく保護されていない障害を受け取りました。障害コードと詳細については、内部の FaultException を参照してください。---> System.ServiceModel.FaultException: メッセージを処理できませんでした。これは、アクション「http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue」が正しくないか、メッセージに無効または期限切れのセキュリティ コンテキスト トークンが含まれているため、またはバインディング間に不一致があります。

サービス トレースに記録されるのは次のとおりです。

System.ServiceModel.EndpointNotFoundException アクション ' http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue 'を持つメッセージを受け入れることができるチャネルがありませんでした。

ここで私は何を間違えましたか?

4

2 に答える 2