You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OData Client 8.x废弃Credentials属性后如何配置凭据?

适用于OData Client 8.x的凭据配置方案

针对Unchase Connected Service生成的OData容器,结合OData Client 8.x的变更,推荐以下两种凭据配置方式:

方法一:直接构造带凭据的HttpClient(简单场景)

直接创建配置好凭据的HttpClientHandler和HttpClient,传入容器构造函数:

// 初始化带默认网络凭据的HttpClientHandler
var httpHandler = new HttpClientHandler
{
    Credentials = CredentialCache.DefaultNetworkCredentials
};

// 基于handler创建HttpClient
var odataHttpClient = new HttpClient(httpHandler);

// 初始化Unchase生成的Container
var _dataContext = new Container(new Uri(url), odataHttpClient);

这种方式无需依赖注入框架,适合控制台应用或小型项目快速配置。

方法二:使用IHttpClientFactory(推荐,适合.NET Core/.NET 5+项目)

遵循.NET最佳实践,利用IHttpClientFactory管理HttpClient生命周期并统一配置凭据:

1. 注册并配置HttpClient

在项目的依赖注入配置中(如Program.cs),注册并配置针对Container的HttpClient:

builder.Services.AddHttpClient<Container>(client =>
{
    // 设置OData服务的基础地址
    client.BaseAddress = new Uri(url);
})
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
    // 配置所需凭据
    Credentials = CredentialCache.DefaultNetworkCredentials
});

2. 依赖注入使用Container

在需要使用OData容器的类中,通过构造函数注入Container:

public class ODataDataService
{
    private readonly Container _dataContext;

    public ODataDataService(Container dataContext)
    {
        _dataContext = dataContext;
    }

    // 示例:执行OData查询
    public async Task<IEnumerable<Entity>> GetEntitiesAsync()
    {
        return await _dataContext.Entities.ToListAsync();
    }
}

这种方式由框架管理HttpClient的创建和回收,避免手动管理可能导致的资源泄漏,同时便于在项目中统一调整HTTP请求配置。

注意事项

确保你使用的Unchase Connected Service是最新版本,它会生成兼容OData Client 8.x的Container类,包含接受HttpClient参数的构造函数。如果没有,可更新Unchase工具重新生成代码。

内容的提问来源于stack exchange,提问作者Tomas Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 01:54:58