我正在使用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
答案 0 :(得分:14)
您可以使用在构建请求之后以及将其发送到服务器之前触发的新SendingRequest2事件。
您可以使用RequestMessage.SetHeader(headername, value)方法设置标头。将值设置为null
以删除标题。
proxy.SendingRequest2 += (sender, eventArgs) =>
{
eventArgs.RequestMessage.SetHeader("Authorization", authHeader);
};
WCF Data Services team blog更多地谈论它:
SendingRequest2(及其弃用的前任SendingRequest)将触发 请求生成后。 WebRequest不允许您修改 施工后的URL。新事件允许您修改URL 在我们构建基础请求之前,让您完全控制 请求。