2

私は ADFS を使用しており、サーバーの URL はhttps://domainname/adfs/ls です。

次のコード スニペットを使用してソリューションに asmx ファイルを追加することにより、WSTrust トリックを使用して .net アプリケーション (フレームワーク 4.6) でこれを使用した場合

var stsEndpoint = ConfigurationManager.AppSettings["EndPoint"];
        var relayPartyUri = ConfigurationManager.AppSettings["RelayPartyUri"];
        EndpointAddress epoint = new EndpointAddress(stsEndpoint);
        var factory =
            new WSTrustChannelFactory(new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
                epoint)
            { TrustVersion = TrustVersion.WSTrust13 };
        if (factory.Credentials != null)
        {
            factory.Credentials.UserName.UserName = @"systemdomain\" + userName;
            factory.Credentials.UserName.Password = password;
        }
        var rst = new RequestSecurityToken
        {
            RequestType = WSTrust13Constants.RequestTypes.Issue,
            AppliesTo = new EndpointReference(relayPartyUri),
            KeyType = WSTrust13Constants.KeyTypes.Bearer
        };
        var channel = factory.CreateChannel();
        var token = channel.Issue(rst);
        var genericToken = token as GenericXmlSecurityToken;

アプリケーションを実行するたびに、行に次のエラーメッセージが表示されます

var token = channel.Issue(rst);

コンテンツ タイプ text/html。応答メッセージの charset=utf-8 がバインディングのコンテンツ タイプ (application/soap+xml; charset=utf-8) と一致しません。カスタム エンコーダーを使用する場合は、IsContentTypeSupported メソッドが適切に実装されていることを確認してください。応答の最初の 1024 バイトは次のとおりです。

スタックトレース:

サーバー スタック トレース: System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest 要求、HttpWebResponse 応答、HttpChannelFactory で)1 factory, WebException responseException, ChannelBinding channelBinding) at System.ServiceModel.Channels.HttpChannelFactory1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan タイムアウト) System.ServiceModel.Channels.RequestChannel.Request(メッセージ メッセージ、TimeSpan タイムアウト) で System.ServiceModel.Channels.SecurityChannelFactory`1.SecurityRequestChannel.Request(メッセージ メッセージ、TimeSpan タイムアウト) でSystem.ServiceModel.Dispatcher.RequestChannelBinder.Request (メッセージ メッセージ、TimeSpan タイムアウト) でSystem.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall、ProxyOperationRuntime 操作) System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ) で [0] で再スローされた例外: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage( IMessage reqMsg、System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) の IMessage retMsg) System.ServiceModel.Security.IWSTrustContract.Issue(メッセージ メッセージ) の System.ServiceModel.Security.WSTrustChannel.Issue(RequestSecurityToken rst, RequestSecurityTokenResponse& rstr) at System.ServiceModel.Security.WSTrustChannel.Issue(RequestSecurityToken rst) at methodname(parameters) 上記の行でエラーがスローされますエラーをスローする上記の行の methodname(parameters) で Issue(RequestSecurityToken rst)エラーをスローする上記の行の methodname(parameters) で Issue(RequestSecurityToken rst)

このエラーを確認する場所がわかりません。サーバー アクセス adfs url が IIS からホストされていません。

私を助けてください!前もって感謝します

4

0 に答える 0