Closed lhg0302 closed 5 years ago
@lhg0302 我编写了一个ft复现了这个问题 Feature/Fixed/IotListProductByTags.cs
在调用 DescribeEndpoint 这个接口获取endpoint时,出现 InvalidRegionId 问题,造成endpoint为null,进而用户端出现 InvalidRegion 问题。
已经去跟接口方进行沟通了。
@lhg0302
找到问题原因了,iot产品不支持cn-hangzhou这个regionId,所以接口报InvalidRegionId是没问题的。
iot产品支持的regionId有以下几个:
cn-shanghai 上海 ap-southeast-1 新加坡 ap-northeast-1 日本东京 eu-central-1 德国法兰克福 us-west-1 美国硅谷 us-east-1 美国弗吉尼亚
@lhg0302
core 1.1.12 和 iot 6.6.2 版本 使用cn-shanghai这个regionId复现,测试通过。
您这边更换regionId后,再尝试一下,如果没有问题了,您可以关闭issue。
非常感谢AxiosCros,但还是报错,我以改为cn-shanghai,我的代码:
IClientProfile profile = DefaultProfile.GetProfile(
"cn-shanghai", "***", "***");
DefaultAcsClient client = new DefaultAcsClient(profile);
RegisterDeviceRequest request = new RegisterDeviceRequest();
request.ProductKey = "a1Lersh4ycy";
request.DeviceName = "facedoor1";
下面这句直接catch
RegisterDeviceResponse response = client.GetAcsResponse(request);
catch信息:
| E.Message | "必须使用适当的属性或方法修改“User-Agent”标头。\r\n参数名: name" | string
在 System.Net.WebHeaderCollection.ThrowOnRestrictedHeader(String headerName)
在 System.Net.WebHeaderCollection.Add(String name, String value)
在 Aliyun.Acs.Core.Http.HttpResponse.GetWebRequest(HttpRequest request)
在 Aliyun.Acs.Core.Http.HttpResponse.GetResponse(HttpRequest request, Nullable1 timeout) 在 Aliyun.Acs.Core.DefaultAcsClient.GetResponse(HttpRequest httpRequest) 在 Aliyun.Acs.Core.DefaultAcsClient.DoAction[T](AcsRequest
1 request, Boolean autoRetry, Int32 maxRetryNumber, String regionId, AlibabaCloudCredentials credentials, Signer signer, Nullable1 format, List
1 endpoints)
在 Aliyun.Acs.Core.DefaultAcsClient.DoAction[T](AcsRequest1 request, Boolean autoRetry, Int32 maxRetryNumber, IClientProfile profile) 在 Aliyun.Acs.Core.DefaultAcsClient.DoAction[T](AcsRequest
1 request)
在 Aliyun.Acs.Core.DefaultAcsClient.GetAcsResponse[T](AcsRequest`1 request)
在 TestProgram.Main(String[] args) 位置 F:\bookCoding\net\aliyun-openapi-net-sdk\ConsoleApp1\Program.cs:行号 22
我调试了下:User-Agent如下 User-Agent:"Alibaba Cloud (Microsoft Windows 10.0.17134 ) Microsoft.NET/Framework Core/1.1.12.0"
@lhg0302
好的,我去复现一下这个问题,查询具体原因。
@lhg0302
我没有复现出来。 请问您是使用的ailyun-net-sdk-core:1.1.12 和 aliyun-net-sdk-iot:6.6.2吗?
目前1.1.12的这个版本,是不会生成
User-Agent:"Alibaba Cloud (Microsoft Windows 10.0.17134 ) Microsoft.NET/Framework Core/1.1.12.0"
这个请求头的。您是自己手动添加的吗?
@lhg0302
请使用nuget的方式下载安装aliyun-net-sdk-core及其它sdk Nuget Core Package
安装方式
dotnet add package aliyun-net-sdk-core --version 1.1.12
dotnet add package aliyun-net-sdk-iot --version 6.6.2
多谢,可以了
因为#40你关闭了,我只好重新提一个,因为问题没有解决
endpoints.xml是由sdk-core生成的,sdk-core没有改变,现在还是以一样的错误 我在client.GetAcsResponse(request);的直接抛出Exception,错误如下: "Aliyun.Acs.Core.Exceptions.ClientException: SDK.InvalidRegionId : Can not find endpoint to access**.\r\n 在 Aliyun.Acs.Core.Profile.DefaultProfile.GetEndpoints(String product, String regionId, String serviceCode, String endpointType)\r\n 在 Aliyun.Acs.Core.DefaultAcsClient.DoAction[T](AcsRequest
1 request, Boolean autoRetry, Int32 maxRetryNumber, IClientProfile profile)\r\n 在 Aliyun.Acs.Core.DefaultAcsClient.DoAction[T](AcsRequest
1 request)\r\n 在 Aliyun.Acs.Core.DefaultAcsClient.GetAcsResponse[T](AcsRequest`1 request)\r\n 在 TestProgram.Main(String[] args) 位置 F:\bookCoding\net\aliyun-openapi-net-sdk\ConsoleApp1\Program.cs:行号 22" | string