5

Buduję aplikację Windows Store przy użyciu środowiska wykonawczego systemu Windows. Uzyskuję dostęp do usługi OData korzystającej z uwierzytelniania podstawowego. Używam biblioteki WCF Data Services Tools for Windows Store Apps (Microsoft.Data.Services.Client.WindowsStore).Jak dodać niestandardowy nagłówek autoryzacji do klienta OData Windows Store App?

Łańcuch uwierzytelniania jest niestandardowym formatem, więc nie mogę po prostu użyć NetworkCredential(username, password). Muszę dodać nagłówek do każdego żądania z mojego DataServiceContext.

Próbowałem za pomocą następującego kodu:

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

Ale otrzymuję błąd:

'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 

Odpowiedz

14

Można użyć nowego SendingRequest2 zdarzenie, które pożary po zamówienie jest zbudowany i przed wysłaniem na serwer.

Istnieje metoda RequestMessage.SetHeader(headername, value), której można użyć do ustawienia nagłówków. Ustaw wartość na null, aby usunąć nagłówek.

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

W WCF Data Services team blog mówi więcej o tym:

SendingRequest2 (and its deprecated predecessor SendingRequest) fires after the request is built. WebRequest does not allow you to modify the URL after construction. The new event lets you modify the URL before we build the underlying request, giving you full control over the request.

+1

pytasz i odpowiedział na swoje pytanie w krótkim czasie. jaki jest sens? – lontivero

+9

@ lontivero, aby poprawić Internet http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –