情況:騰訊COS上傳檔案,asp.net項目。開始是這樣處理的:前端上傳檔案到背景,背景再上傳到COS,一開始考慮的是統一管理,這時候用的也是永久的id和key。部署的時候因為伺服器流量成本增加的原因,需要前端直接上傳檔案到COS,安全考慮,需要背景動态生成臨時密鑰。
官網文檔中介紹了兩種擷取方式:
方式2有點複雜就沒繼續看。
主要記錄下方式1在使用中遇到的問題。
運作COS STS SDK的demo沒問題,然後在asp.net項目中運作的時候,導緻整個程式不響應了。
1.COS STS SDK依賴TecentCloudSDK和标準庫
2.在TecentCloudSDK的github首頁有對這個問題描述:
3.然後參考下裡面的這篇文章,我們需要使用同步方法。
4.我們看到COS STS SDK的源碼就隻有一個STSClient.cs,把這個檔案裡異步方法修改一下:将genCredential()方法中的獲驗證書如下改成同步
//GetFederationTokenResponse resp = client.GetFederationToken(req).
// ConfigureAwait(false).GetAwaiter().GetResult();
GetFederationTokenResponse resp = client.GetFederationTokenSync(req);
這樣,就可以起作用了。