tencentyun / qcloud-sdk-dotnet

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

集成到unity后上传文件pc正常,ios和android一直回调CosClientException

xophiix opened this issue · comments

就是按照示例代码

var request = new PutObjectRequest(bucket, key, data);
            //设置签名有效时长
            request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
            
            //设置进度回调
            request.SetCosProgressCallback(delegate(long completed, long total)
            {
                Console.WriteLine($"upload {key} to cos progress = {completed * 100.0 / total:##.##}%");
            });
            
            //执行请求
            _cosXml.PutObject(request,
                (cosResult) =>
                {
                    //请求成功
                    var result = cosResult as PutObjectResult;
                    Console.WriteLine(result.GetResultInfo());
                    callback(null);
                }, 
                
                delegate(COSXML.CosException.CosClientException clientEx, COSXML.CosException.CosServerException serverEx)
                {    
                    //请求失败
                    if (clientEx != null)
                    {
                        Console.WriteLine("CosClientException: " + clientEx.Message);
                        callback(clientEx.Message);
                    }                    
                    else if (serverEx != null)
                    {
                        Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                        callback(serverEx.GetInfo());
                    }
                });

并且奇怪的是
CosClientException的Message为Success

经查明是Process.ProcessName调用抛的异常,应该是unity的mono版本没正确实现这个函数。只好先绕过了

COSXML.CosException.CosClientException: Success ---> System.ComponentModel.Win32Exception: Success
  at System.Diagnostics.Process.GetProcessHandle (System.Int32 access, System.Boolean throwIfExited) [0x00000] in <00000000000000000000000000000000>:0 
  at System.Diagnostics.Process.get_ProcessName () [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Log.QLog.Print (COSXML.Log.LEVEL level, System.String tag, System.String message, System.Exception exception) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Log.QLog.D (System.String tag, System.String message, System.Exception exception) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Log.QLog.D (System.String tag, System.String message) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Network.CommandTask+HttpHeaderHandle.AddHeader (System.Net.WebHeaderCollection webHeaderCollection, System.String key, System.String value) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Network.CommandTask.HandleHttpWebRequestHeaders (COSXML.Network.Request request, System.Net.HttpWebRequest httpWebRequest, COSXML.Network.HttpClientConfig config) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Network.CommandTask.Schedue (COSXML.Network.Request request, COSXML.Network.Response response, COSXML.Network.HttpClientConfig config) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Network.HttpClient.InternalSchedue (COSXML.Model.CosRequest cosRequest, COSXML.Model.CosResult cosResult, COSXML.Callback.OnSuccessCallback`1[T] successCallback, COSXML.Callback.OnFailedCallback failCallback) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.Network.HttpClient.Schedue (COSXML.Model.CosRequest cosRequest, COSXML.Model.CosResult cosResult, COSXML.Callback.OnSuccessCallback`1[T] successCallback, COSXML.Callback.OnFailedCallback failCallback) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.CosXmlServer.schedue (COSXML.Model.CosRequest request, COSXML.Model.CosResult result, COSXML.Callback.OnSuccessCallback`1[T] successCallback, COSXML.Callback.OnFailedCallback failCallback) [0x00000] in <00000000000000000000000000000000>:0 
  at COSXML.CosXmlServer.PutObject (COSXML.Model.Object.PutObjectRequest request, COSXML.Callback.OnSuccessCallback`1[T] successCallback, COSXML.Callback.OnFailedCallback failCallback) [0x00000] in <00000000000000000000000000000000>:0