6

Windows ランタイムを使用して Windows ストア アプリを構築しています。基本認証を使用する OData サービスにアクセスしています。WCF Data Services Tools for Windows Store Appsライブラリ ( )を使用していMicrosoft.Data.Services.Client.WindowsStoreます。

認証文字列はカスタム形式なので、NetworkCredential(username, password). からのすべてのリクエストに自分でヘッダーを追加する必要がありDataServiceContextます。

次のコードを使用してみました:

proxy.SendingRequest += (s, e) =>
{
   e.RequestHeaders.Add("Authorization", authHeader);
}

しかし、私はエラーを受け取ります:

'System.Net.WebHeaderCollection' does not contain a definition for 'Add' and no extension method 'Add' accepting a first argument of type 'System.Net.WebHeaderCollection' could be found
4

1 に答える 1

15

リクエストが作成された後、サーバーに送信される前に発生する新しいSendingRequest2イベントを使用できます。

ヘッダーを設定するために使用できるRequestMessage.SetHeader(headername, value)メソッドがあります。nullヘッダーを削除するには、値を に設定します。

proxy.SendingRequest2 += (sender, eventArgs) =>
{
    eventArgs.RequestMessage.SetHeader("Authorization", authHeader);
};

WCF Data Services チームのブログでは、それについて詳しく説明しています。

SendingRequest2 (およびその非推奨の前身である SendingRequest) は、リクエストが作成された後に発生します。WebRequest では、構築後に URL を変更することはできません。新しいイベントを使用すると、基になるリクエストを作成する前に URL を変更できるため、リクエストを完全に制御できます。

于 2012-12-22T10:03:55.893 に答える