为Odata客户端

时间:2017-05-19 08:58:40

标签: c# asp.net-web-api odata

我一直在尝试为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的请求后被触发,这对我来说真的很奇怪。 文档说:

  

"在构建请求消息对象之前触发此事件"

这里似乎有什么问题?

1 个答案:

答案 0 :(得分:1)

经过大量研究后,我找到了问题的原因:事件处理程序" BuildingRequest"在您提出实际请求之前不会被触发,即如果您有类似的方法:

public IQueryable<Package> GetPackages()
{
   return _container.Packages.AsQueryable();
}

&#34; BuildingRequest&#34;处理程序不会被触发。你必须执行它,就像这样:

_container.Packages.ToList();

为了让它发挥作用。