天天看點

遇到的問題之dotnet騰訊COS生成臨時憑證

情況:騰訊COS上傳檔案,asp.net項目。開始是這樣處理的:前端上傳檔案到背景,背景再上傳到COS,一開始考慮的是統一管理,這時候用的也是永久的id和key。部署的時候因為伺服器流量成本增加的原因,需要前端直接上傳檔案到COS,安全考慮,需要背景動态生成臨時密鑰。

官網文檔中介紹了兩種擷取方式:

遇到的問題之dotnet騰訊COS生成臨時憑證

方式2有點複雜就沒繼續看。

主要記錄下方式1在使用中遇到的問題。

運作COS STS SDK的demo沒問題,然後在asp.net項目中運作的時候,導緻整個程式不響應了。

1.COS STS SDK依賴TecentCloudSDK和标準庫

遇到的問題之dotnet騰訊COS生成臨時憑證

2.在TecentCloudSDK的github首頁有對這個問題描述:

遇到的問題之dotnet騰訊COS生成臨時憑證

3.然後參考下裡面的這篇文章,我們需要使用同步方法。

4.我們看到COS STS SDK的源碼就隻有一個STSClient.cs,把這個檔案裡異步方法修改一下:将genCredential()方法中的獲驗證書如下改成同步

//GetFederationTokenResponse resp = client.GetFederationToken(req).
            //    ConfigureAwait(false).GetAwaiter().GetResult();

        GetFederationTokenResponse resp = client.GetFederationTokenSync(req);
           

這樣,就可以起作用了。

遇到的問題之dotnet騰訊COS生成臨時憑證