我一直在尝试为Odata
客户端设置授权标头值。在我实例化客户端后,我这样做:
container.BuildingRequest += (sender, e) => OnBuildingRequest(sender, e, accessToken);
private static void OnBuildingRequest(object sender, BuildingRequestEventArgs e, string token)
{
e.Headers.Add("Authorization", "Bearer " + token);
}
调试时,它显示事件处理程序在发出对WEB API的请求后被触发,这对我来说真的很奇怪。 文档说:
"在构建请求消息对象之前触发此事件"
这里似乎有什么问题?
答案 0 :(得分:1)
经过大量研究后,我找到了问题的原因:事件处理程序" BuildingRequest"在您提出实际请求之前不会被触发,即如果您有类似的方法:
public IQueryable<Package> GetPackages()
{
return _container.Packages.AsQueryable();
}
&#34; BuildingRequest&#34;处理程序不会被触发。你必须执行它,就像这样:
_container.Packages.ToList();
为了让它发挥作用。