我试图按照这篇文章为 odata 服务实现一个客户端
我遇到的挑战:
按照文章中的步骤,我想通了
1) (ProductClient).odata.config 不是自动生成的 - 我们可以创建一个
2) 需要凭据才能访问端点的客户端(在我的例子中是基本身份验证)
3) 最重要的 - 也找不到关于 stackoverflow 的相关文章:)
已经为像我这样的新手发布了下面的解决方案!
最佳答案
解决方案
为了实现类似于文章中提到的东西(即)
通过需要身份验证的 Odata 端点访问强类型 Odata 实体 -
static void ReadingODataEndPointByPassingMyBasicAuthCreds() {
// e.g. URL = http://localhost/myApi/odata
var url = ConfigurationManager.AppSettings["MyAPIBaseUrl"];
var container = new MyApi.Container(new Uri(url));
container.SendingRequest2 += SendBaseAuthCredsOnTheRequest;
foreach(var myEntity in container.MyEntities) {
Console.WriteLine(myEntity.Name);
Console.Write(string.Format("Description: {0}", myEntity.Description));
}
Console.Read();
}
private static void SendBaseAuthCredsOnTheRequest(object sender,
System.Data.Services.Client.SendingRequest2EventArgs e) {
var authHeaderValue = Convert.ToBase64String(Encoding.ASCII.GetBytes(String.Format("{0}:{1}", ConfigurationManager.AppSettings["username"]
, ConfigurationManager.AppSettings["password"])));
//this is where you pass the creds.
e.RequestMessage.SetHeader("Authorization", "Basic " + authHeaderValue);
}
关于asp.net - 如何将身份验证 header (基本)从 .NetClient 传递到 OData 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502984/