5

Tôi đang xây dựng một ứng dụng Windows Store bằng cách sử dụng Windows Runtime. Tôi đang truy cập dịch vụ OData sử dụng Xác thực cơ bản. Tôi đang sử dụng thư viện WCF Data Services Tools for Windows Store Apps (Microsoft.Data.Services.Client.WindowsStore).Làm cách nào để thêm tiêu đề ủy quyền tùy chỉnh vào ứng dụng khách OData của Windows Store App?

Chuỗi xác thực là định dạng tùy chỉnh, vì vậy tôi không thể chỉ sử dụng NetworkCredential(username, password). Tôi cần tự thêm tiêu đề vào mọi yêu cầu từ số DataServiceContext của mình.

tôi đã cố gắng sử dụng đoạn mã sau:

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

Nhưng tôi nhận được lỗi:

'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 

Trả lời

14

Bạn có thể sử dụng SendingRequest2 sự kiện mới mà cháy sau khi yêu cầu được xây dựng và trước khi nó được gửi đến máy chủ.

Có phương thức RequestMessage.SetHeader(headername, value) mà bạn có thể sử dụng để đặt tiêu đề. Đặt giá trị thành null để xóa tiêu đề.

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

Các WCF Data Services team blog cuộc đàm phán thêm về nó:

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

bạn hỏi và trả lời câu hỏi của riêng bạn trong một thời gian ngắn. vấn đề ở đây là gì? – lontivero

+9

@lontivero để làm cho internet tốt hơn http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –

Các vấn đề liên quan