OssClient是OSS服務的C#用戶端,它為調用者提供了一系列的方法,可以用來操作,管理儲存空間(Bucket)和檔案(Object)等。
確定Endpoint
Endpoint是阿里雲OSS服務在各個區域的網域名稱地址,目前支援兩種形式
Endpoint類型 | 解釋 |
---|---|
OSS區域地址 | 使用OSS Bucket所在區域地址,各個區域Endpoint參考這裡 |
使用者自訂網域名 | 使用者自訂網域名,且CNAME指向OSS網域名稱 |
OSS區域地址
使用OSS Bucket所在區域地址,Endpoint查詢可以通過以下兩種方式:
- 查詢Endpoint與區域對應關係詳情,可以參考:點擊查看。
- 您可以登入 阿里雲OSS控制台,進入Bucket概覽頁,Bucket網域名稱的尾碼部分:如
bucket-1.oss-cn-hangzhou.aliyuncs.com
的oss-cn-hangzhou.aliyuncs.com
部分為該Bucket的外網Endpoint。
CNAME
- 您可以將自己擁有的網域名稱通過CNAME綁定到某個儲存空間(Bucket)上,然後通過自己網域名稱訪問儲存空間內的檔案
- 比如您要將網域名稱new-image.xxxxx.com綁定到深圳區域的名稱為image的儲存空間上:
- 您需要到您的網域名稱xxxxx.com託管商那裡設定一個新的網域名稱解析,將
http://new-image.xxxxx.com
解析到http://image.oss-cn-shenzhen.aliyuncs.com
,類型為CNAME
配置密鑰
要接入阿里雲OSS,您需要擁有一個有效 Access Key(包括AccessKeyId和AccessKeySecret)用來進行簽名認證。可以通過如下步驟獲得:
在獲取到 AccessKeyId和 AccessKeySecret之後,您可以按照下面步驟進行初始化對接
新建Client
使用OSS網域名稱新建Client
新建一個OssClient很簡單,如下面代碼所示:
using Aliyun.OSS;
const string accessKeyId = "<your AccessKeyId>";
const string accessKeySecret = "<your AccessKeySecret>";
const string endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
/// <summary>
/// 由使用者指定的OSS訪問地址、阿里雲頒發的AccessKeyId/AccessKeySecret構造一個新的OssClient執行個體。
/// </summary>
/// <param name="endpoint">OSS的訪問地址。</param>
/// <param name="accessKeyId">OSS的訪問ID。</param>
/// <param name="accessKeySecret">OSS的存取金鑰。</param>
var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);
使用自訂網域名(CNAME)新建Client
下面的代碼讓用戶端使用CNAME訪問OSS服務:
using Aliyun.OSS;
using Aliyun.OSS.Common;
// 建立ClientConfiguration執行個體
var conf = new ClientConfiguration();
// 配置使用Cname
conf.IsCname = true;
/// <summary>
/// 由使用者指定的OSS訪問地址、、阿里雲頒發的AccessKeyId/AccessKeySecret、用戶端配置
/// 構造一個新的OssClient執行個體。
/// </summary>
/// <param name="endpoint">OSS的訪問地址。</param>
/// <param name="accessKeyId">OSS的訪問ID。</param>
/// <param name="accessKeySecret">OSS的存取金鑰。</param>
/// <param name="conf">用戶端配置。</param>
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
注意: 使用CNAME時,無法使用ListBuckets介面。
配置Client
如果您想配置OssClient的一些細節的參數,可以在構造OssClient的時候傳入ClientConfiguration對象。 ClientConfiguration是OSS服務的配置類,可以為用戶端配置代理,最大連接數等參數。
網路參數
您可以用ClientConfiguration設定一些網路參數:
參數 | 描述 | 預設值 |
---|---|---|
ConnectionLimit | 最大並發連接數 | 512 |
MaxErrorRetry | 請求發生錯誤時最大重試次數 | 3 |
ConnectionTimeout | 設定連接逾時時間,單位毫秒,預設不逾時 | -1 |
SetCustomEpochTicks | 設定自訂基準時間,即與本機時間差,單位秒 | 0 |
IsCname | Endpoint是否是Cname | false |
ProgressUpdateInterval | 進度條更新間隔,單位位元組 | 8096 |
樣本如下:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var conf = new ClientConfiguration();
conf.ConnectionLimit = 512;
conf.MaxErrorRetry = 3;
conf.ConnectionTimeout = 300;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
資料校驗
您可以設定參數EnalbeMD5Check
,對上傳下載的資料自動進行MD5校驗,預設關閉。請使用以下代碼開啟MD5校驗:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var conf = new ClientConfiguration();
conf.EnalbeMD5Check = true;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
提示:
- MD5校驗是邊上傳資料邊計算校驗和,與伺服器返回的校驗和比較,兩者不符則拋
ClientException
異常。- MD5校驗會有一定的計算和效能開銷。
代理網路
如果您使用的網路是代理(Proxy)網路,可以配置以下參數訪問OSS:
參數 | 描述 | 預設值 |
---|---|---|
ProxyHost | Proxy 伺服器,如8.8.8.8 或 abc.def.com |
空 |
ProxyPort | 代理通信埠,如3128 或 8080 |
空 |
ProxyUserName | 代碼服務帳號,選擇性參數 | 無 |
ProxyPassword | 代碼服務密碼,選擇性參數 | 無 |
無帳號密碼的代理網路訪問樣本:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var conf = new ClientConfiguration();
conf.ProxyHost = "8.8.8.8";
conf.ProxyPort = 3128;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
帶帳號密碼的代理網路訪問樣本:
using Aliyun.OSS;
using Aliyun.OSS.Common;
var conf = new ClientConfiguration();
conf.ProxyHost = "8.8.8.8";
conf.ProxyPort = 3128;
conf.ProxyUserName = "user";
conf.ProxyPassword = "6666";
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);