OssClient是OSS服务的.NET客户端,用于管理存储空间(Bucket)和文件(Object)等OSS资源。
新建OssClient
您可以通过以下多种方式新建OssClient。
V4签名(推荐)
推荐使用更安全的V4签名算法。使用V4签名初始化时,除指定Endpoint以外,您还需要指定阿里云通用Region ID作为发起请求地域的标识,示例值为cn-hangzhou
。同时声明SignVersion.V4。OSS .NET SDK 2.14.0及以上版本支持V4签名。
以使用OSS域名新建OSSClient时使用V4签名为例,其他通过自定义域名、STS等新建OSSClient的场景可参考以下示例执行相应修改。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");、
// 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 填写Bucket所在地域对应的Region。以华东1(杭州)为例,Region填写为cn-hangzhou。
const string region = "cn-hangzhou";
// 创建ClientConfiguration实例,按照您的需要修改默认参数。
var conf = new ClientConfiguration();
// 设置v4签名。
conf.SignatureVersion = SignatureVersion.V4;
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
V1签名(不推荐)
阿里云对象存储OSS自2025年03月01日起不再对新用户(即新UID )开放使用V1签名,并将于2025年09月01日起停止更新与维护且不再对新增Bucket开放使用V1签名。请尽快切换到V4签名,避免影响服务。更多信息,请参见公告说明。
使用OSS域名新建OssClient
以下代码用于使用OSS域名新建OssClient。
using Aliyun.OSS;
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 构造OssClient实例。
var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);
使用自定义域名新建OssClient
以下代码用于使用自定义域名新建OssClient。
使用自定义域名时,不支持使用ossClient.listBuckets方法。
using Aliyun.OSS;
using Aliyun.OSS.Common;
// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// 填写自定义域名。
const string endpoint = "yourDomain";
// 创建ClientConfiguration实例,按照您的需要修改默认参数。
var conf = new ClientConfiguration();
// 打开CNAME开关。CNAME是指将自定义域名绑定到存储空间的过程。
conf.IsCname = true;
// 创建OssClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
使用STS新建OssClient
以下代码用于使用STS新建一个OssClient。
using Aliyun.OSS;
// 运行本代码示例之前,请确保已使用STS服务获取的临时访问密钥设置环境变量YOUR_ACCESS_KEY_ID和YOUR_ACCESS_KEY_SECRET。
var accessKeyId = Environment.GetEnvironmentVariable("YOUR_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("YOUR_ACCESS_KEY_ID");
// 从STS服务获取的安全令牌(SecurityToken)。
const string securityToken = "yourSecurityToken";
// 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// 构造OssClient实例。
var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret, securityToken);
配置OssClient
ClientConfiguration是OSSClient的配置类,您可通过此类来配置代理、连接超时、最大连接数等参数。可设置的参数如下:
参数 | 描述 | 默认值 |
ConnectionLimit | 最大并发连接数。 | 512 |
MaxErrorRetry | 请求失败后最大的重试次数。 | 3 |
ConnectionTimeout | 设置连接超时时间,单位为毫秒。 | -1(不超时) |
EnalbeMD5Check | 上传或下载数据时是否开启MD5校验。
重要 使用MD5校验时会有一定的性能开销。 | false |
IsCname | Endpoint是否支持CNAME。CNAME用于将自定义域名绑定到存储空间。 | false |
ProgressUpdateInterval | 进度条更新间隔,单位为字节。 | 8096 |
ProxyHost | 代理服务器,例如 | 无 |
ProxyPort | 代理端口,例如 | 无 |
ProxyUserName | 代理服务账号,可选参数。 | 无 |
ProxyPassword | 代理服务密码,可选参数。 | 无 |
以下代码用于配置OssClient。
using Aliyun.OSS;
using Aliyun.OSS.Common;
var conf = new ClientConfiguration();
// 设置最大并发连接数。
ClientConfiguration.ConnectionLimit = 512;
// 设置请求失败后最大的重试次数。
conf.MaxErrorRetry = 3;
// 设置连接超时时间。
conf.ConnectionTimeout = 300;
// 开启MD5校验。
conf.EnalbeMD5Check = true;
// 设置代理服务器。
conf.ProxyHost = "example.aliyundoc.com";
// 设置代理端口。
conf.ProxyPort = 3128;
// 设置代理网络的访问账号。
conf.ProxyUserName = "user";
// 设置代理网络的访问密码。
conf.ProxyPassword = "password";
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);