如何将自定义授权标头添加到Windows应用商店OData客户端?

Gra*_*day 5 wcf-data-services odata windows-8 windows-runtime windows-store-apps

我正在使用Windows运行时构建Windows应用商店应用.我正在访问使用基本身份验证的OData服务.我正在使用WCF数据服务工具用于Windows应用商店库(Microsoft.Data.Services.Client.WindowsStore).

身份验证字符串是自定义格式,所以我不能只使用NetworkCredential(username, password).我需要自己添加标题给我的每个请求DataServiceContext.

我尝试使用以下代码:

proxy.SendingRequest += (s, e) =>
{
   e.RequestHeaders.Add("Authorization", authHeader);
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

'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
Run Code Online (Sandbox Code Playgroud)

Gra*_*day 14

您可以使用在构建请求之后以及将其发送到服务器之前触发的新SendingRequest2事件.

有一个RequestMessage.SetHeader(headername,value)方法,可用于设置标头.将值设置null为删除标题.

proxy.SendingRequest2 += (sender, eventArgs) =>
{
    eventArgs.RequestMessage.SetHeader("Authorization", authHeader);
};
Run Code Online (Sandbox Code Playgroud)

WCF数据服务团队博客更多地谈论它:

构建请求后,将触发SendingRequest2(及其已弃用的前任SendingRequest).WebRequest不允许您在构造后修改URL.新事件允许您在构建基础请求之前修改URL,使您可以完全控制请求.

  • @lontivero让互联网变得更好http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ (9认同)