阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

初始化

更新時間: Oct 19, 2018

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.comoss-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很簡單,如下面代碼所示:

  1. using Aliyun.OSS;
  2. const string accessKeyId = "<your AccessKeyId>";
  3. const string accessKeySecret = "<your AccessKeySecret>";
  4. const string endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  5. /// <summary>
  6. /// 由使用者指定的OSS訪問地址、阿里雲頒發的AccessKeyId/AccessKeySecret構造一個新的OssClient執行個體。
  7. /// </summary>
  8. /// <param name="endpoint">OSS的訪問地址。</param>
  9. /// <param name="accessKeyId">OSS的訪問ID。</param>
  10. /// <param name="accessKeySecret">OSS的存取金鑰。</param>
  11. var ossClient = new OssClient(endpoint, accessKeyId, accessKeySecret);

使用自訂網域名(CNAME)新建Client

下面的代碼讓用戶端使用CNAME訪問OSS服務:

  1. using Aliyun.OSS;
  2. using Aliyun.OSS.Common;
  3. // 建立ClientConfiguration執行個體
  4. var conf = new ClientConfiguration();
  5. // 配置使用Cname
  6. conf.IsCname = true;
  7. /// <summary>
  8. /// 由使用者指定的OSS訪問地址、、阿里雲頒發的AccessKeyId/AccessKeySecret、用戶端配置
  9. /// 構造一個新的OssClient執行個體。
  10. /// </summary>
  11. /// <param name="endpoint">OSS的訪問地址。</param>
  12. /// <param name="accessKeyId">OSS的訪問ID。</param>
  13. /// <param name="accessKeySecret">OSS的存取金鑰。</param>
  14. /// <param name="conf">用戶端配置。</param>
  15. 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

樣本如下:

  1. using Aliyun.OSS;
  2. using Aliyun.OSS.Common;
  3. var conf = new ClientConfiguration();
  4. conf.ConnectionLimit = 512;
  5. conf.MaxErrorRetry = 3;
  6. conf.ConnectionTimeout = 300;
  7. var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);

資料校驗

您可以設定參數EnalbeMD5Check,對上傳下載的資料自動進行MD5校驗,預設關閉。請使用以下代碼開啟MD5校驗:

  1. using Aliyun.OSS;
  2. using Aliyun.OSS.Common;
  3. var conf = new ClientConfiguration();
  4. conf.EnalbeMD5Check = true;
  5. var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);

提示:

  • MD5校驗是邊上傳資料邊計算校驗和,與伺服器返回的校驗和比較,兩者不符則拋ClientException異常。
  • MD5校驗會有一定的計算和效能開銷。

代理網路

如果您使用的網路是代理(Proxy)網路,可以配置以下參數訪問OSS:

參數 描述 預設值
ProxyHost Proxy 伺服器,如8.8.8.8abc.def.com
ProxyPort 代理通信埠,如31288080
ProxyUserName 代碼服務帳號,選擇性參數
ProxyPassword 代碼服務密碼,選擇性參數

無帳號密碼的代理網路訪問樣本:

  1. using Aliyun.OSS;
  2. using Aliyun.OSS.Common;
  3. var conf = new ClientConfiguration();
  4. conf.ProxyHost = "8.8.8.8";
  5. conf.ProxyPort = 3128;
  6. var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);

帶帳號密碼的代理網路訪問樣本:

  1. using Aliyun.OSS;
  2. using Aliyun.OSS.Common;
  3. var conf = new ClientConfiguration();
  4. conf.ProxyHost = "8.8.8.8";
  5. conf.ProxyPort = 3128;
  6. conf.ProxyUserName = "user";
  7. conf.ProxyPassword = "6666";
  8. var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);