6

我正在使用 Windows 运行时构建 Windows 应用商店应用程序。我正在访问使用基本身份验证的 OData 服务。我正在使用适用于 Windows 应用商店应用程序库的WCF 数据服务工具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 数据服务团队博客对此进行了更多讨论:

SendingRequest2(及其已弃用的前身 SendingRequest)在构建请求后触发。WebRequest 不允许您在构建后修改 URL。新事件允许您在我们构建基础请求之前修改 URL,从而让您完全控制请求。

于 2012-12-22T10:03:55.893 回答