0

奇妙な問題で基本認証を使用してRESTサービスを利用しようとしています。最初に行われた要求には、指定された基本認証資格情報が含まれていません。これは、最初に行われたすべての要求に対して発生します。これは、アプリケーションが起動するたびに発生します。後続のリクエストでは発生しません。このクラスを使用しClientBase<T>てAPIを呼び出しています。これは次のようになります。

public class MyApi : ClientBase<IMyApi>
{
    protected override IMyApi CreateChannel()
    {
        //Remove all client credentials. 
        ChannelFactory.Endpoint.Behaviors.RemoveAll<ClientCredentials>();

        //Create new client credentials and add to the endpoint behaviours.
        ClientCredentials clientCredentials = new ClientCredentials();
        clientCredentials.UserName.UserName = Username;
        clientCredentials.UserName.Password = Password;
        ChannelFactory.Endpoint.Behaviors.Add(clientCredentials);

        return base.CreateChannel();
    }

    public MyApi() : base (DefaultEndpointName)
    {}
}

私のバインディングは次のように設定されています。

  <customBinding>        
    <binding name="myApiBinding">
      <webMessageEncoding webContentTypeMapperType="ContentTypeMapper,Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <httpTransport manualAddressing="true" maxReceivedMessageSize="6553600" authenticationScheme="Basic" realm="myRealm" />
    </binding>
  </customBinding>

プロジェクトを.Net4に上げてみましたが、APIの初期化後にクライアントのクレデンシャルを追加しましたが、望ましい効果が得られたものはないようです。

リクエストごとにクレデンシャルを追加する方法はありますか?

4

1 に答える 1

1

この質問を参照してください。

最初の答えはその理由を説明しています...(サーバーは認証チャレンジで最初の要求に応答する必要があります)

2番目の回答は、回避方法を説明しています...(要求httpヘッダーを操作して、基本認証資格情報を手動で挿入することにより)

于 2012-10-29T14:39:47.323 に答える