Giter Club home page Giter Club logo

alibabacloud-csharp-sdk's People

Contributors

peze avatar sdk-team avatar yndu13 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alibabacloud-csharp-sdk's Issues

Nlp_automl20191111 版本能不能调用情绪识别服务

情绪识别服务 https://help.aliyun.com/document_detail/181220.html?spm=a2c4g.181139.0.i0

我使用Nlp_automl20191111尝试调用 情绪识别服务 版本一直报错400, Specified parameter Version is not valid
`
AlibabaCloud.SDK.Nlp_automl20191111.Models.RunPreTrainServiceRequest runPreTrainServiceNewRequest = new AlibabaCloud.SDK.Nlp_automl20191111.Models.RunPreTrainServiceRequest { PredictContent="我爱你",ServiceName= "DeepEmotion",ServiceVersion= "2020-06-29" };

AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();

var rsp = await _httpClient.RunPreTrainServiceWithOptionsAsync(runPreTrainServiceNewRequest, runtime);`

我看了alinlp-20200629版本里已经没有RunPreTrainService方法了 也不知道调哪一个
官方示例 链接到 aliyun-openapi-net-sdk 搞不懂 纯openapi方法也没有

不知道哪一个sdk能调用这个服务

目前的版本在Centos7的版本上调用发送短信Api会报错,在Windows上运行是正常

错误信息为:
One or more errors occurred. (The SSL connection could not be established, see inner exception.)
System.AggregateException: One or more errors occurred. (The SSL connection could not be established, see inner exception.)
---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)
at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)
--- End of stack trace from previous location where exception was thrown ---
at System.Net.Security.SslStream.ThrowIfExceptional()
at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)
at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result)
at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)
at System.Net.Security.SslStream.<>c.b__65_1(IAsyncResult iar)
at System.Threading.Tasks.TaskFactory1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction, Action1 endAction, Task1 promise, Boolean requiresSynchronization)
--- End of stack trace from previous location where exception was thrown ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
--- End of inner exception stack trace ---
at AlibabaCloud.OpenApiClient.Client.DoRPCRequest(String action, String version, String protocol, String method, String authType, String bodyType, OpenApiRequest request, RuntimeOptions runtime)
at AlibabaCloud.SDK.Dysmsapi20170525.Client.SendSmsWithOptions(SendSmsRequest request, RuntimeOptions runtime)
at AlibabaCloud.SDK.Dysmsapi20170525.Client.SendSms(SendSmsRequest request)
请问是需要加什么配置,还是Linux上的Bug呢?

发送短信问题报错

"ClassName":"System.Net.WebException","Message":"operation is timeout","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at AlibabaCloud.OpenApiClient.Client.DoRequestAsync(Params params_, OpenApiRequest request, RuntimeOptions runtime)\n at AlibabaCloud.OpenApiClient.Client.CallApiAsync(Params params_, OpenApiRequest request, RuntimeOptions runtime)\n at AlibabaCloud.SDK.Dysmsapi20170525.Client.SendSmsWithOptionsAsync(SendSmsRequest request, RuntimeOptions runtime)

只要报错了,后面就一直报错。配置了ConnectTimeout,ReadTimeout,MaxAttempts,都没有用

使用`partial`关键字对大文件进行拆分

你们的SDK里有很多上万行的大文件,建议进行拆分。
.Net从很久以前就支持partial关键字,把一个class拆到多个文件里。

比如.Net Runtime的TimeZone类,就拆分了很多文件。
Example

具体到你们sdk里,比如:

https://github.com/aliyun/alibabacloud-csharp-sdk/blob/master/ecs-20140526/core/Client.cs

这个文件3.xMiB,6万多行。
可以改成partial class,按功能拆成Client.Feature1.csClient.Feature2.cs,增加可维护性。

在某一台电脑上发送失败,显示Newtonsoft.Json相关异常

错误日志如下,请问是什么问题?在别的电脑上都可以,在一台新电脑上已发送就报这个错误。

[21:01:30.655 ] [ ERROR ] Read Response Failed
[ 21:01:30.655 ] [ ERROR ] Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0. Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
Button.OnClick => Control.OnClick => FormMain.button1_Click
[ 21:01:30.666 ] [ ERROR ] 在 AlibabaCloud.OpenApiClient.Client.DoRequest(Params params_, OpenApiRequest request, RuntimeOptions runtime)
在 AlibabaCloud.OpenApiClient.Client.CallApi(Params params_, OpenApiRequest request, RuntimeOptions runtime)
在 AlibabaCloud.SDK.Dysmsapi20170525.Client.SendSmsWithOptions(SendSmsRequest request, RuntimeOptions runtime)
在 DTS.FormMain.button1_Click(Object sender, EventArgs e)
[ 21:01:30.666 ] [ ERROR ] Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value: <. Path '', line 0, position 0. Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
Button.OnClick => Control.OnClick => FormMain.button1_Click

AlibabaCloud.SDK.Pds20220301 存在 BUG,无法通过 AK 调用 API

AlibabaCloud.SDK.Pds20220301 --version 1.0.3

使用 AK 调用接口时始终返回错误 code: 403, SignatureDoesNotMatch.
定位到问题位于 AlibabaCloud.GatewayPds.Client,该类中的以下两个方法存在错误,导致用于 AK 签名的字符串中未包含前缀为 x-acs- 的 HTTP 请求头

public List<string> GetSignedHeaders(Dictionary<string, string> headers)
{
    List<string> list = ArrayUtil.AscSort(MapUtil.KeySet(headers));
    string text = "";
    string text2 = "";
    foreach (string item in list)
    {
        string text3 = StringUtil.ToLower(item);
        if (StringUtil.HasPrefix(text3, "x-acs-") && !StringUtil.Contains(text, text3))
        {
            text = text + text2 + text3;
            text2 = ";";
        }
    }

    // SDK 中存在 bug 的原代码
    //return StringUtil.Split(text, ";", 0);

    // 修改后
    return StringUtil.Split(text, ";", null);
}

public async Task<List<string>> GetSignedHeadersAsync(Dictionary<string, string> headers)
{
    List<string> list = ArrayUtil.AscSort(MapUtil.KeySet(headers));
    string text = "";
    string text2 = "";
    foreach (string item in list)
    {
        string text3 = StringUtil.ToLower(item);
        if (StringUtil.HasPrefix(text3, "x-acs-") && !StringUtil.Contains(text, text3))
        {
            text = text + text2 + text3;
            text2 = ";";
        }
    }

    // SDK 中存在 bug 的原代码
    //return StringUtil.Split(text, ";", 0);

    // 修改后
    return StringUtil.Split(text, ";", null);
}

AlibabaCloud.SDK.Dysmsapi20170525的构造函数支持IOptions<T>

请求需要用到AlibabaCloud.OpenApiClient.Models.Config,但目前AlibabaCloud.SDK.Dysmsapi20170525的构造函数中AlibabaCloud.OpenApiClient.Models.Config是直接作为参数传递的,在Core中实体一般是通过IOptions<T>注入的,建议通过#if来支持

.NET Core/5.0 支持问题

很高兴贵团队推出了新的升级版SDK,相较于之前原版,该版本提供了基于async/await的异步方法支持,值得肯定。

不过目前在实际应用中,我注意到该项目的核心组件Tea依赖于Nuget包BouncyCastle,而该Nuget包仅适用于.NET Framework程序。这导致了.NET 5项目中一旦引用该SDK的Nuget包,编译时IDE会发出警告:

已使用“.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8”而不是项目目标框架“net5.0”还原包“BouncyCastle 1.8.6.1”。此包可能与项目不完全兼容。

在RELEASE模式下Publish时会直接提示发布失败。

BouncyCastle官网上可以看到发行记录,其中1.8.5版本发行记录中提到:

这是支持旧版.NET平台的最终功能版本。从1.9.0版开始,我们将针对更现代的.NET框架,并更新我们的构建和打包系统。1.8.x系列将继续收到错误修复,但新功能有限。

希望贵团队能及时关注该依赖项的更新,并尽快解决这个问题。最坏的可能是需要对NFX和Core后的.NET版本做分别依赖并打包,或者干脆换掉该依赖。

使用文档

连个使用文档都不提供的是吗 ??

初始化切片上传出错

var initUploadRequest = new InitiateMultipartUploadRequest();
var initUploadResult = _ossClient.InitiateMultipartUpload(_aliyunOssConfig.PictureBucketName, key, initUploadRequest);

返回:Tea.TeaException: The request signature we calculated does not match the signature you provided. Check your key and signing method.

一样的client调用PutObjectAsync上传成功

AlibabaCloud.SDK.Oss20190517 仍然无法使用

根据 #7 的说法,该问题已经修复了,但是,又有新的问题了。

调用方法如下:

using Oss = AlibabaCloud.SDK.Oss20190517;

var ossCfg = new Config
{
    AccessKeyId = <Key>,
    AccessKeySecret = <Secret>,
    Endpoint = "oss-cn-hangzhou.aliyuncs.com"
};

var cli = new Oss.Client(ossCfg);

var req = new Oss.Models.ListBucketsRequest
{
    MaxKeys = 500
};

try
{
    // var result = await cli.ListBucketsAsync(req);
    var result = await cli.ListBucketsWithOptionsAsync(req, new Dictionary<string, string>(), new RuntimeOptions());
    if (result == null || result.Body == null || result.Body.Buckets == null ||
        result.Body.Buckets.Buckets == null || result.Body.Buckets.Buckets.Count == 0)
    {
        return new(code: 400, msg: "暂无 Bucket");
    }

    return new(result.Body.Buckets.Buckets, result.Body.Buckets.Buckets.Count);
}
catch (TeaException e)
{
    return new(code: 500, msg: Common.AssertAsString(e.Message));
}
catch (Exception e)
{
    var ex = new TeaException(new Dictionary<string, string>
    {
        { "message", e.Message }
    });

    return new(code: 500, msg: Common.AssertAsString(ex.Message));
}

抛出异常如图所示:

另外,不知道阿里云对于 .NET Core 的 SDK,有没有暂停的计划,如果要暂停了,麻烦告知一下,不然,对于官方 SDK,出现这样的 BUG,感觉有点匪夷所思。

CopyObject方法不能跨Bucket

在尝试从Aliyun.OSS.SDK.NetCore 迁移到此SDK版本的过程中发现方法少跨Bucket复制的功能,而且参数定义有一定的迷惑性,Copy方法应该给出源和目标的参数的,现在只看到一个Bucket和Key的参数,并不清楚其中的定义如何。

AlibabaCloud.SDK.Oss20190517 不能使用吗?

对于 OSS 的操作,现在使用的是 Aliyun.OSS.SDK.NetCore,偶然看到还有一个 AlibabaCloud.SDK.Oss20190517 的 SDK。

添加到项目内,调用方法 ListBucketsAsync(req),抛出异常:The method or operation is not implemented

请问,这个 SDK AlibabaCloud.SDK.Oss20190517 还没有实现完毕吗?

OSS SDK调用`GetObjectMetaAsync`异常

传入相同的bucket和key,若key存在——
HeadObjectAsync请求成功;
GetObjectMetaAsync抛出xml异常:

System.Xml.XmlException: Root element is missing.
   at AlibabaCloud.OpenApiClient.Client.ExecuteAsync(Params params_, OpenApiRequest request, RuntimeOptions runtime)
   at AlibabaCloud.SDK.Oss20190517.Client.GetObjectMetaWithOptionsAsync(String bucket, String key, GetObjectMetaRequest request, Dictionary`2 headers, RuntimeOptions runtime)
   at AlibabaCloud.SDK.Oss20190517.Client.GetObjectMetaAsync(String bucket, String key, GetObjectMetaRequest request)

若key不存在,则均抛出上述异常。

看文档这两个API含义相似,只是后者似乎返回的内容更少。

我的原始需求是想确认bucket里是否存在指定路径和名称的文件,新SDK里似乎没有提供直接的API。

AlibabaCloud.SDK.Oss20190517 问题简单汇总

由于在阿里云的 SDK 文档中,没有 C# 升级版的示例代码,只能摸索着测试,在目前用到的功能,碰到的异常和问题,罗列出来:

异常

  1. GetObjectWithOptionsAsync#10 的异常:Object must implement IConvertible.(在调用 CopyObjectWithOptionsAsync 之前,调用了获取文件的方法,由于报异常,所以没有对复制文件的方法进行测试)

  2. DeleteMultipleObjectsWithOptionsAsync 异常:unsupported nest list.

  3. GetObjectTaggingWithOptionsAsync 异常:The request signature we calculated does not match the signature you provided. Check your key and signing method.(其他 Object 的方法都能正常访问,这个方法,提示签名算法异常)

其他

  1. 原 SDK 的 OssObjectSummary 中,含有 BucketName 这个属性,在新 SDK 的 Models.ObjectSummary 中,不再含有该属性,而是在 ListObjectsV2ResponseBody 中统一用 Name。请问,是否确定移除 Models.ObjectSummary 中的 BucketName 属性?

  2. ListObjectsV2WithOptionsAsync 请求/返回中的 StartAfter,请问,该属性,是否是原 SDK 中的 NextMarker

    • 如果是,在调用 ListObjectsV2WithOptionsAsync 之后,StartAfter 返回值为 null(已确定 Bucket 中的文件数量大于 Models.ListObjectsV2Request 中的 MaxKeys
    • 如果不是,那怎么对 Bucket 中的文件进行分页?
  3. 除了个别属性不同,请问,ListObjectsListObjectsV2 还有什么区别吗?看文档,建议使用 V2,意思是,后续 ListObjects 会删除吗?

    • 如果要删除,建议将 ListObjects 标记为已过时,并提示将在 xxx 版本删除。
    • 如果不删除,请说明一下两个方法的区别和使用场景。
  4. CopyObjectWithOptionsAsync 方法的前两个参数,是拷贝时的目的 Bucket 和 Key 吧?如果是,建议调整参数名(类似:DestBucket 之类的),这样更直观。

总的来说,升级版和旧版,有一些属性上的差异,我觉得是正常的,不过,感觉升级版的 SDK 待完善的地方还有很多,我这里只是我在项目里用到的方法的一个汇总。

[BUG] OSS SDK存在Content-Type强制覆盖导致用户设置无效

起因

在通过自定义域名访问OSS部分文件时,希望可以直接在浏览器中预览而非触发下载操作。

按照官方文档《通过文件URL访问图片无法预览而是以附件形式下载?》的说法,只需要设置Content-Disposition为inline即可。

但通过新版SDK上传图片、音频等文件后,通过浏览器访问地址仍始终触发浏览器下载操作。而旧版本SDK上传后,操作结果符合预期。

调查结果

在旧SDK中,会根据文件扩展名来决定Content-Type,如png图片文件是image/png

而在新版SDK中,则直接在AlibabaCloud.OpenApiClient.Client请求前headers["content-type"]强制覆盖成了application/octet-stream。在OSS Browser客户端查看文件时,其HTTP头如下:

1668763573863

将Content-Type改成image/png后,访问图片地址成功显示预览而非触发下载。

这应该是一个Bug,希望能尽快修复!@yndu13

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.