Beispiel #1
0
        public DefaultAcsClient GetDefaultClient()
        {
            IClientProfile   profile = DefaultProfile.GetProfile(regionId, GetBasicAccessKeyId(), GetBasicAccessKeySecret());
            DefaultAcsClient client  = new DefaultAcsClient(profile);

            client.SetConnectTimeoutInMilliSeconds(2 * 60 * 1000);
            client.SetReadTimeoutInMilliSeconds(2 * 60 * 1000);
            return(client);
        }
Beispiel #2
0
        public void SetReadTimeoutTest()
        {
            IClientProfile   profile = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE);
            DefaultAcsClient client  = new DefaultAcsClient(profile);

            client.SetReadTimeoutInMilliSeconds(3000);

            Assert.Equal(3000, client.readTimeout);
        }
        public void DoAction5()
        {
            Environment.SetEnvironmentVariable("DEBUG", "sdk");
            int          status    = 200;
            string       code      = "ThisIsCode1";
            string       message   = "ThisIsMessage1";
            string       requestId = "ThisIsRequestId1";
            HttpResponse response  = new HttpResponse();

            byte[] content = Encoding.GetEncoding("UTF-8").GetBytes("{\"Code\":\"" + code + "\",\"Message\":\"" + message + "\",\"RequestId\":\"" + requestId + "\"}");
            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = status;

            Dictionary <string, string> tmpHeaders = new Dictionary <string, string>
            {
                { "Content-MD5", "md5" },
                { "Content-Length", "length" },
                { "Content-Type", "text/json" }
            };

            response.Headers = tmpHeaders;

            var mockInstance = new Mock <DefaultAcsClient>()
            {
                CallBase = true
            };

            mockInstance.Setup(foo => foo.GetResponse(
                                   It.IsAny <HttpRequest>()
                                   )).Returns(response);

            DefaultAcsClient instance = mockInstance.Object;

            // Mock AcsResquest
            MockAcsRequestForDefaultAcsClient request = new MockAcsRequestForDefaultAcsClient();

            request.AcceptFormat = FormatType.JSON;
            ProductDomain productDomain = new ProductDomain("productName1", "productDomain1");

            request.ProductDomain = productDomain;

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            AlibabaCloudCredentials credentials = mockCredentials.Object;

            // Mock Signer
            Signer signer = new HmacSHA1Signer();

            var result = instance.DoAction <AcsResponse>(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, null);

            Assert.Null(Environment.GetEnvironmentVariable("DEBUG"));

            status = 500;
            result = instance.DoAction <AcsResponse>(request, true, 0, "cn-hangzhou", credentials, signer, FormatType.JSON, null);
            Assert.Null(Environment.GetEnvironmentVariable("DEBUG"));
        }
Beispiel #4
0
        public void IsExpired()
        {
            IClientProfile profile  = DefaultProfile.GetProfile("cn-shanghai", "accessKeyId", "accessKeySecret");
            var            client   = new DefaultAcsClient(profile);
            var            provider = new StaticCredentialsProvider(profile);
            var            instance = new CredentialsBackupCompatibilityAdaptor(provider);

            Assert.False(instance.IsExpired());
        }
Beispiel #5
0
        public static IAcsClient InitAcsClient(String regionIdForPop, String accessId, String accessSecret, String productName, String domainForPop)
        {
            IClientProfile profile = DefaultProfile.GetProfile(regionIdForPop, accessId, accessSecret);

            DefaultProfile.AddEndpoint(regionIdForPop, regionIdForPop, productName, domainForPop);
            IAcsClient acsClient = new DefaultAcsClient(profile);

            return(acsClient);
        }
Beispiel #6
0
        /// <summary>
        /// 短信发送
        /// </summary>
        /// <param name="cellPhone">必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”</param>
        /// <param name="TemplateCode">模板code</param>
        /// <param name="OutId">可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者</param>
        /// <param name="message">可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 "{\"name\":\"Tom\", \"code\":\"123\"}"</param>
        /// <param name="returnMsg"></param>
        /// <param name="speed"></param>
        /// <returns></returns>
        public override bool Send(string cellPhone, string TemplateCode, string message, out string returnMsg, string OutId = "", string speed = "0")
        {
            if (((string.IsNullOrEmpty(cellPhone) || string.IsNullOrEmpty(message)) || (cellPhone.Trim().Length == 0)) || (message.Trim().Length == 0))
            {
                returnMsg = "手机号码和消息内容不能为空";
                return(false);
            }
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", Appkey, Appsecret);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            if (string.IsNullOrEmpty(TemplateCode))
            {
                TemplateCode = "SMS_139390116";//阿里云自带的
            }
            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumbers = cellPhone;
                //必填:短信签名-可在短信控制台中找到
                request.SignName = SignName;         // "阿里云短信测试专用";
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = TemplateCode; // "SMS_71135039";
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 "{\"name\":\"Tom\", \"code\":\"123\"}"
                request.TemplateParam = message;     // "{\"name\":\"Tom\", \"code\":\"123\"}"
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                if (string.IsNullOrEmpty(OutId))
                {
                    OutId = DateTime.Now.Ticks.ToString();
                }
                request.OutId = OutId;// "21212121211";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
                returnMsg = sendSmsResponse.Message;
                if (sendSmsResponse.Code.ToLower() == "ok")
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (ServerException e)
            {
                returnMsg = "未知错误(ServerException 1)";
                return(false);
            }
            catch (ClientException e)
            {
                returnMsg = "未知错误(ClientException 2)";
                return(false);
            }
        }
Beispiel #7
0
        /// <summary>
        /// 发送短信
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public MmbjSendSmsResult SendSms(MmbjSMSConfig config)
        {
            //类型不可转换,那么报错
            if (!(config is AliyunSendSMSConfig sendSmsConfig))
            {
                throw new ArgumentException("参数类型传输错误");
            }


            var regionId = string.IsNullOrWhiteSpace(sendSmsConfig.RegionId)
                ? "default"
                : sendSmsConfig.RegionId.Trim();

            IClientProfile   profile = DefaultProfile.GetProfile(sendSmsConfig.RegionId, sendSmsConfig.AccessKeyId, sendSmsConfig.AccessSecret);
            DefaultAcsClient client  = new DefaultAcsClient(profile);
            CommonRequest    request = new CommonRequest();

            request.Method  = MethodType.POST;
            request.Domain  = "dysmsapi.aliyuncs.com";
            request.Version = "2017-05-25";
            request.Action  = "SendSms";
            // request.Protocol = ProtocolType.HTTP;

            request.AddQueryParameters("PhoneNumbers", sendSmsConfig.PhoneNumbers);
            request.AddQueryParameters("SignName", sendSmsConfig.SignName);
            request.AddQueryParameters("TemplateCode", sendSmsConfig.TemplateCode);
            request.AddQueryParameters("TemplateParam", sendSmsConfig.TemplateParam);
            request.AddQueryParameters("SmsUpExtendCode", sendSmsConfig.SmsUpExtendCode);
            request.AddQueryParameters("OutId", sendSmsConfig.OutId);
            try
            {
                CommonResponse response = client.GetCommonResponse(request);
                //Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
                return(JsonConvert.DeserializeObject <AliyunSendSmsResult>(response.Data));
            }
            catch (ServerException e)
            {
                Console.WriteLine(e);
                return(new AliyunSendSmsResult()
                {
                    Message = "短信服务器错误",
                    Code = "AliServerError",
                    RequestId = string.Empty
                });
            }
            catch (ClientException e)
            {
                Console.WriteLine(e);
                return(new AliyunSendSmsResult()
                {
                    Message = "短信客户端错误",
                    Code = "AliClientError",
                    RequestId = string.Empty
                });
            }
        }
Beispiel #8
0
        /// <summary>
        /// 灵活发送短信
        /// </summary>
        /// <param name="validatacodepara"></param>
        /// <returns></returns>
        public static ValidateResultMsg FlexVerificationCode(ValidataCodeParameter validatacodepara)
        {
            ValidateResultMsg resultMsg    = null;
            string            validatecode = new Random().Next(111111, 999999).ToString();

            String product         = "Dysmsapi";                       //短信API产品名称
            String domain          = "dysmsapi.aliyuncs.com";          //短信API产品域名
            String accessKeyId     = validatacodepara.AccessKeyId;     //你的accessKeyId
            String accessKeySecret = validatacodepara.AccessKeySecret; //你的accessKeySecret

            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            //IAcsClient client = new DefaultAcsClient(profile);
            // SingleSendSmsRequest request = new SingleSendSmsRequest();

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumbers = validatacodepara.Mobile;
                //必填:短信签名-可在短信控制台中找到
                request.SignName = validatacodepara.SignName;
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = validatacodepara.TemplateCode;
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                //  request.TemplateParam = "{\"name\":\"Tom\", \"code\":\"123\"}";
                //   request.TemplateParam = "{\"code\":\"" + validatecode + "\"}";
                request.TemplateParam = validatacodepara.TemplateParam;
                //    业务类型:${type} 申请人:${name} 业务进度:${schedule} 处理时间:${time} 感谢您使用xx微警务!
                //   request.TemplateParam = "{\"type\":\"花花\",\"name\":\"水水\",\"schedule\":\"可以\",\"time\":\"2017-09-09\"}";
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                request.OutId = "21212121211";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);

                resultMsg              = new ValidateResultMsg();
                resultMsg.StatusCode   = sendSmsResponse.Code;
                resultMsg.Info         = sendSmsResponse.Message;
                resultMsg.BizId        = sendSmsResponse.BizId;
                resultMsg.ValidataCode = validatecode;
                return(resultMsg);

                //System.Console.WriteLine(sendSmsResponse.Message);
            }
            catch (ServerException e)
            {
                resultMsg              = new ValidateResultMsg();
                resultMsg.StatusCode   = "";
                resultMsg.Info         = e.ToString();
                resultMsg.ValidataCode = "";
                return(resultMsg);
            }
        }
Beispiel #9
0
        public AliyunMail(IOptions <AliyunDmOptions> options, ILogger <AliyunMail> logger, IDistributedCache cache, IMailLimit limit)
        {
            Options = options.Value;
            Logger  = logger;
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", Options.AccessId, Options.AccessKey);

            Client = new DefaultAcsClient(profile);
            Cache  = cache;
            Limit  = limit;
        }
 public void Get()
 {
     IClientProfile profile = DefaultProfile.GetProfile("cn-shanghai", "accessKeyId", "accessKeySecret");
     DefaultAcsClient client = new DefaultAcsClient(profile);
     var provider = new StaticCredentialsProvider(profile);
     CredentialsBackupCompatibilityAdaptor instance = new CredentialsBackupCompatibilityAdaptor(provider);;
     Assert.IsType<int>(instance.GetHashCode());
     instance.GetType();
     Assert.IsType<Aliyun.Acs.Core.Auth.CredentialsBackupCompatibilityAdaptor>(instance);
 }
Beispiel #11
0
        /// <summary>
        /// 发送短信
        /// </summary>
        /// <param name="request"></param>
        public SendSMSResponse SendSMS(SendSMSRequest request)
        {
            string product         = "Dysmsapi";                       //短信API产品名称
            string domain          = "dysmsapi.aliyuncs.com";          //短信API产品域名
            string accessKeyId     = "LTAIOMPsjtzrkrgC";               //你的accessKeyId
            string accessKeySecret = "y4umqrQMKR29NJWoUzMMxuOcCTaEK9"; //你的accessKeySecret

            var cacheProvider = ClientProxy.GetInstance <IRedisProvider>();

            return(cacheProvider.Get <SendSMSResponse>(request.SMSCacheKey, () => {
                IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
                DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
                IAcsClient acsClient = new DefaultAcsClient(profile);
                SendSmsRequest sendSmsRequest = new SendSmsRequest();
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为20个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                sendSmsRequest.PhoneNumbers = request.PhoneNumber;
                //必填:短信签名-可在短信控制台中找到
                sendSmsRequest.SignName = "千年教育";
                //必填:短信模板-可在短信控制台中找到
                sendSmsRequest.TemplateCode = "SMS_112465567";
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                var templateParam = new
                {
                    code = request.Rand
                };
                sendSmsRequest.TemplateParam = templateParam.ToJson2();
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                //request.OutId = "21212121211";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(sendSmsRequest);
                if (sendSmsResponse.Code != null && sendSmsResponse.Code.Equals("OK"))
                {
                    Using <ISMS>().Insert(new BsSMS()
                    {
                        PhoneNumber = request.PhoneNumber,
                        Content = string.Format("您的短信验证码是{0}。若非本人发送,请忽略此短信。本条短信免费。", request.Rand),
                        Priority = 10,
                        FailureTimes = 0,
                        Status = 1,
                        CreatedBy = 1,
                        CreatedDate = DateTime.Now
                    });
                    return new SendSMSResponse()
                    {
                        PhoneNumber = request.PhoneNumber,
                        Rand = request.Rand,
                        SendTime = DateTime.Now
                    };
                }
                else
                {
                    return new SendSMSResponse();
                }
            }, request.catchTime));
        }
Beispiel #12
0
        public string SendMessageByJixiao(DataGridViewRow dgvr)
        {
            String         product         = "Dysmsapi";                       //短信API产品名称(短信产品名固定,无需修改)
            String         domain          = "dysmsapi.aliyuncs.com";          //短信API产品域名(接口地址固定,无需修改)
            String         accessKeyId     = "LTAI4FugPzRHJVse3oN6RNKn";       //你的accessKeyId,参考本文档步骤2
            String         accessKeySecret = "ONYrai4gO8CJ3wIrF0ZGyPJw5iOJ0r"; //你的accessKeySecret,参考本文档步骤2
            IClientProfile profile         = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            //IAcsClient client = new DefaultAcsClient(profile);
            // SingleSendSmsRequest request = new SingleSendSmsRequest();
            //初始化ascClient,暂时不支持多region(请勿修改)
            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式,发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”
                request.PhoneNumbers = dgvr.Cells["电话号码"].Value.ToString();
                //必填:短信签名-可在短信控制台中找到
                request.SignName = "湛江市霞山妇幼保健院";
                //必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
                request.TemplateCode  = "SMS_178760067";
                request.TemplateParam = "{\"xingming\":\"" + dgvr.Cells["姓名"].Value.ToString() + "\""
                                        + ",\"yuefen\":\"" + dgvr.Cells["月份"].Value.ToString() + "\""
                                        + ",\"yingfajixiao\":\"" + dgvr.Cells["应发绩效"].Value.ToString() + "元\""
                                        + ",\"jibenjixiao\":\"" + dgvr.Cells["基本绩效"].Value.ToString() + "元\""
                                        + ",\"jiaban\":\"" + dgvr.Cells["加班"].Value.ToString() + "元\""
                                        + ",\"yeban\":\"" + dgvr.Cells["夜班"].Value.ToString() + "元\""
                                        + ",\"qitajixiao\":\"" + dgvr.Cells["其他绩效"].Value.ToString() + "元\""
                                        + ",\"zhufangbutie\":\"" + dgvr.Cells["住房补贴"].Value.ToString() + "元\""
                                        + ",\"yingkoujixiao\":\"" + dgvr.Cells["应扣绩效"].Value.ToString() + "元\""
                                        + ",\"gerensuodeshui\":\"" + dgvr.Cells["个人所得税"].Value.ToString() + "元\""
                                        + ",\"zhiyenianjin\":\"" + dgvr.Cells["职业年金"].Value.ToString() + "元\""
                                        + ",\"kouqita\":\"" + dgvr.Cells["扣其他"].Value.ToString() + "元\""
                                        + ",\"shifajixiao\":\"" + dgvr.Cells["实发绩效"].Value.ToString() + "元\""
                                        + "}";
                //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                request.OutId = "yourOutId";
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
                // System.Console.WriteLine(sendSmsResponse.Message);
                return(sendSmsResponse.Message);
                // MessageBox.Show(sendSmsResponse.Message);
            }
            catch (ServerException ex)
            {
                return(ex.Message);
                //System.Console.WriteLine("Hello World!");
            }
            catch (ClientException ex)
            {
                return(ex.Message);
            }
        }
Beispiel #13
0
        public static bool SendSms(string phoneNumbers, string signName, string templateCode, Dictionary <string, string> templateParam)
        {
            IClientProfile profile = DefaultProfile.GetProfile(regionIdForPop, accessId, accessSecret);

            DefaultProfile.AddEndpoint(regionIdForPop, regionIdForPop, product, domain);
            IAcsClient     acsClient = new DefaultAcsClient(profile);
            SendSmsRequest request   = new SendSmsRequest();

            try
            {
                StringBuilder templateParamStr = new StringBuilder();
                if (templateParam.Count > 0)
                {
                    templateParamStr.Append("{");
                    foreach (KeyValuePair <string, string> kvp in templateParam)
                    {
                        templateParamStr.Append("\"" + kvp.Key + "\":\"" + kvp.Value + "\",");
                    }
                    templateParamStr.Append("}");
                    templateParamStr.Replace("\",}", "\"}");
                }
                //request.SignName = "上云预发测试";//"管理控制台中配置的短信签名(状态必须是验证通过)"
                //request.TemplateCode = "SMS_71130001";//管理控制台中配置的审核通过的短信模板的模板CODE(状态必须是验证通过)"
                //request.RecNum = "13567939485";//"接收号码,多个号码可以逗号分隔"
                //request.ParamString = "{\"name\":\"Tom\", \"code\":\"123\"}";//短信模板中的变量;数字需要转换为字符串;个人用户每个变量长度必须小于15个字符。"
                //request.TemplateCode = "SMS_xxxxxxx"; // 必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版
                //request.TemplateParam = "{\"code\":\"123\"}"; //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                //SingleSendSmsResponse httpResponse = client.GetAcsResponse(request);


                request.PhoneNumbers  = phoneNumbers;
                request.SignName      = signName;
                request.TemplateCode  = templateCode;
                request.TemplateParam = templateParamStr.ToString();
                //request.OutId = "xxxxxxxx"; //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                //请求失败这里会抛ClientException异常
                SendSmsResponse sendSmsResponse = acsClient.GetAcsResponse(request);
                if (sendSmsResponse.Code != null && sendSmsResponse.Code.Equals("OK"))
                {
                    return(true);
                }
                System.Console.WriteLine(sendSmsResponse.Message);
                return(false);
            }
            catch (ServerException e)
            {
                System.Console.WriteLine("ServerException");
                return(false);
            }
            catch (ClientException e)
            {
                System.Console.WriteLine("ClientException");
                return(false);
            }
        }
        public void SetLoggerTest()
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE);
            var client = new DefaultAcsClient(profile);

            var logger = new Logger(EnvironmentUtil.GetHomePath() + EnvironmentUtil.GetOSSlash() + "log.txt");
            // Use Invalid Path will set the default user home path
            client.SetLogger(logger);

            client.CloseLogger();
        }
Beispiel #15
0
    /// <summary>
    /// SMS发送
    /// </summary>
    /// <param name="PhoneNumbers"></param>
    /// <param name="templateCode">(登录:SMS_135270123,注册:SMS_135027712)</param>
    /// <param name="code"></param>
    /// <param name="OutId"></param>
    /// <returns></returns>
    public static SendSmsResponse SendSms(String PhoneNumbers, String templateCode, String code, String OutId)
    {
        if (templateCode == "SMS_135027712")
        {
            accessKeyId     = "LTAIyvUxwrsW0tE1";
            accessKeySecret = "JjWCuLjlJ3fdxfnnMxAQrcRBxIGYCW";
            SMSSignName     = "小龙虾";
            tempId          = templateCode;
        }
        else
        {
            randomNum       = UnityEngine.Random.Range(0, 2);
            accessKeyId     = akIds[randomNum];
            accessKeySecret = akIdSecrets[randomNum];
            SMSSignName     = signNames[randomNum];
            tempId          = tempIds[randomNum];
        }
        IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

        DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient      acsClient = new DefaultAcsClient(profile);
        SendSmsRequest  request   = new SendSmsRequest();
        SendSmsResponse response  = null;

        try
        {
            //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
            //request.PhoneNumbers = "15000000000";
            request.PhoneNumbers = PhoneNumbers;
            //必填:短信签名-可在短信控制台中找到
            //request.SignName = "云通信";
            request.SignName = SMSSignName;
            //必填:短信模板-可在短信控制台中找到
            //request.TemplateCode = "SMS_1000000";
            request.TemplateCode = tempId;
            //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
            //request.TemplateParam = "{\"code\":\"123\"}";
            request.TemplateParam = code;
            //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
            //request.OutId = "yourOutId";
            request.OutId = OutId;
            //请求失败这里会抛ClientException异常
            response = acsClient.GetAcsResponse(request);
        }
        catch (ServerException e)
        {
            Debug.LogErrorFormat("SendSms ServerException:{0}={1}", PhoneNumbers, e.ErrorCode);
        }
        catch (ClientException e)
        {
            Debug.LogErrorFormat("SendSms ServerException:{0}={1}", PhoneNumbers, e.ErrorCode);
        }
        return(response);
    }
Beispiel #16
0
        public Task Execute(IJobExecutionContext context)
        {
            var publicIP = GetPublicIPEx();
            var cachedIP = CacheHelper.GetCacheValue <string>(CACHEKEY_CachedIP);

            if (!string.IsNullOrWhiteSpace(cachedIP) && cachedIP.Equals(publicIP, StringComparison.OrdinalIgnoreCase))
            {
                return(Task.CompletedTask);
            }

            IClientProfile   profile = DefaultProfile.GetProfile("cn-hangzhou", ConfigUtil.GetConfigVariableValue("accessKeyId"), ConfigUtil.GetConfigVariableValue("accessSecret"));
            DefaultAcsClient client  = new DefaultAcsClient(profile);
            var request = new DescribeDomainRecordsRequest();

            //request.Value = "3.0.3.0";
            //request.Type = "A";
            //request.RR = "apitest1";
            request.DomainName  = ConfigUtil.GetConfigVariableValue("DomainName");
            request.TypeKeyWord = ConfigUtil.GetConfigVariableValue("DomainRecordType");
            request.RRKeyWord   = ConfigUtil.GetConfigVariableValue("DomainRecordRR");
            try
            {
                var response = client.GetAcsResponse(request);
                if (response.TotalCount > 0)
                {
                    var rec = response.DomainRecords.FirstOrDefault(t => t.RR.Equals(request.RRKeyWord, StringComparison.CurrentCultureIgnoreCase));
                    if (rec != null && rec.Value != publicIP)
                    {
                        var reqChange = new UpdateDomainRecordRequest();
                        reqChange.RecordId = rec.RecordId;
                        reqChange.RR       = rec.RR;
                        reqChange.Type     = rec.Type;
                        reqChange.Value    = publicIP;

                        var respChange = client.GetAcsResponse(reqChange);

                        CacheHelper.SetCacheValue(CACHEKEY_CachedIP, publicIP);

                        Console.WriteLine($"[{DateTime.Now}]:{rec.RR}.{rec.DomainName} Changed to IP {publicIP} success");
                    }
                }
                // Console.WriteLine(System.Text.Encoding.Default.GetString(response.HttpResponse.Content));
            }
            catch (ServerException e)
            {
                Console.WriteLine($"[{DateTime.Now}]【Exception】{e}");
            }
            catch (ClientException e)
            {
                Console.WriteLine($"[{DateTime.Now}]【Exception】{e}");
            }

            return(Task.CompletedTask);
        }
        public AliyunServers()
        {
            // 初始化客户端

            var aliyunAccessKeyID     = ""; //
            var aliyunAccessKeySecret = ""; //
            //cn-shanghai 国内,不用其它值
            IClientProfile clientProfile = DefaultProfile.GetProfile("cn-shanghai", aliyunAccessKeyID, aliyunAccessKeySecret);

            acsClient = new DefaultAcsClient(clientProfile);
        }
        public void ClientIgnoreCertificateTest()
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE);
            var            client  = new DefaultAcsClient(profile);

            client.SetHttpsInsecure();
            Assert.False(client.IgnoreCertificate);

            client.SetHttpsInsecure(true);
            Assert.True(client.IgnoreCertificate);
        }
Beispiel #19
0
        public void DoAction()
        {
            // Mock RegionIds
            ISet <String> regionIds = new HashSet <String>();

            regionIds.Add("cn-hangzhou");

            // Mock productDomains
            List <ProductDomain> productDomains = new List <ProductDomain>()
            {
            };

            // Mock endpoint
            Endpoint endpoint = new Endpoint("cn-hangzhou", regionIds, productDomains);

            // Mock endpoints
            List <Endpoint> endpoints = new List <Endpoint>()
            {
            };

            endpoints.Add(endpoint);

            // Mock credential
            Credential credential = new Credential(AKID, AKSE);

            // Mock Profile
            var mockProfile = new Mock <IClientProfile>();

            mockProfile.Setup(foo => foo.GetCredential()).Returns(credential);
            IClientProfile profile = mockProfile.Object;

            DefaultAcsClient instance = new DefaultAcsClient();

            // Mock AcsResquest
            MockAcsRequestForDefaultAcsClient request = new MockAcsRequestForDefaultAcsClient();

            request.RegionId             = "cn-hangzhou";
            request.Product              = "Ess";
            request.LocationProduct      = "ess";
            request.LocationEndpointType = "openAPI";

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            AlibabaCloudCredentials credentials = mockCredentials.Object;
            Signer signer = new HmacSHA1Signer();

            // When prodoctDomain is not exist
            Assert.Throws <ClientException>(
                () =>
            {
                var response = instance.DoAction <AcsResponse>(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, endpoints);
            }
                );
        }
Beispiel #20
0
        public void TestAddExistingEndpointManually()
        {
            var request    = new DescribeRegionsRequest();
            var profile    = DefaultProfile.GetProfile("cn-wenzhou", GetBasicAccessKeyId(), GetBasicAccessKeySecret());
            var testClient = new DefaultAcsClient(profile);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", "Ecs",
                                       "abc.cn-hangzhou.endpoint-test.exception.com");

            Assert.Throws <ClientException>(() => { testClient.GetAcsResponse(request); });
        }
        private CreateUploadVideoResponseResult GetUploadAddress(RecordVideoInfo info)
        {
            DefaultAcsClient          client   = InitVodClient();
            CreateUploadVideoResponse response = client.GetAcsResponse(CreateUploadVideoRequest(info));

            return(new CreateUploadVideoResponseResult()
            {
                CreateUploadVideoResponse = response,
                UploadAddressInfo = JsonConvert.DeserializeObject <UploadAddressInfo>(Encoding.UTF8.GetString(Convert.FromBase64String(response.UploadAddress))),
                UploadAuth = JsonConvert.DeserializeObject <UploadAuth>(Encoding.UTF8.GetString(Convert.FromBase64String(response.UploadAuth)))
            });
        }
Beispiel #22
0
        /// <summary>
        /// 发送短信模板
        /// </summary>
        /// <param name="phone">手机号码</param>
        /// <param name="signName">短信签名名称</param>
        /// <param name="templateCode">短信模板</param>
        /// <param name="outId">外部流水扩展字段</param>
        /// <param name="templateParamDic">模板中自定义参数及参数值</param>
        /// <returns></returns>
        public (bool success, string msg) SendSmsTemplate(string phoneNumber, string signName, string templateCode, string outId = null, Dictionary <string, string> templateParamDic = null)
        {
            (bool success, string msg)result = new ValueTuple <bool, string>();
            IClientProfile profile = DefaultProfile.GetProfile(aliyunSmsOptionsValue.RegionId,
                                                               aliyunSmsOptionsValue.AccessKeyId,
                                                               aliyunSmsOptionsValue.AccessSecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);
            var request             = new SendSmsRequest();

            request.Method  = MethodType.POST;
            request.Version = "2017-05-25";
            //支持对多个手机号码发送短信,手机号码之间以英文逗号(,)分隔。上限为1000个手机号码。批量调用相对于单条调用及时性稍有延迟。
            request.PhoneNumbers = phoneNumber;
            //必填:短信签名名称。请在控制台签名管理页面签名名称一列查看。
            request.SignName = signName;
            //必填:短信模板-可在短信控制台中找到
            request.TemplateCode = templateCode;

            //短信模板变量对应的实际值,JSON格式。说明 如果JSON中需要带换行符,请参照标准的JSON协议处理。
            if (templateParamDic != null && templateParamDic.Count > 0)
            {
                var converter = new IsoDateTimeConverter();
                converter.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
                var jsonTemplateParam = JsonConvert.SerializeObject(templateParamDic, Formatting.Indented, converter);
                request.TemplateParam = jsonTemplateParam;
            }
            //可选:外部流水扩展字段。
            request.OutId = outId;
            try
            {
                var sendSmsResponse = client.GetAcsResponse(request);
                if (!string.IsNullOrEmpty(sendSmsResponse.Code) && sendSmsResponse.Code.ToUpper() == "OK")
                {
                    result.success = true;
                }
                else
                {
                    result.success = false;
                    result.msg     = sendSmsResponse.Message;
                }
            }
            catch (ServerException e)
            {
                result.success = false;
                result.msg     = e.Message;
            }
            catch (ClientException e)
            {
                result.success = false;
                result.msg     = e.Message;
            }
            return(result);
        }
        public void SetLoggerTest()
        {
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", AKID, AKSE);
            var            client  = new DefaultAcsClient(profile);

            // Use Invalid Path will set the default user home path
            DefaultAcsClient.EnableLogger();
            Assert.True(CommonLog.GetEnableLoggerStatus());

            DefaultAcsClient.DisableLogger();
            Assert.False(CommonLog.GetEnableLoggerStatus());
        }
Beispiel #24
0
        public static async Task <SendSmsResponse> SendCode4ali(string Phone, string code) //string TemplateCode,
        {
            var verifyCodeService = DependencyResolver.Current.GetService <IVerifyCodeService>();
            var accountSetting    = SettingsLoader.GetAccountConfiguration();

            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);

            DefaultProfile.AddEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
            IAcsClient      acsClient = new DefaultAcsClient(profile);
            SendSmsRequest  request   = new SendSmsRequest();
            SendSmsResponse response  = null;

            try
            {
                //必填:待发送手机号。支持以逗号分隔的形式进行批量调用,批量上限为1000个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumbers = Phone;
                //必填:短信签名-可在短信控制台中找到
                request.SignName = "安捷需求侧培训";
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = "SMS_143861938";
                //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                if (!string.IsNullOrEmpty(code))
                {
                    request.TemplateParam = "{\"code\":" + code + "}";
                }
                ////可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
                //request.OutId = "yourOutId";
                //请求失败这里会抛ClientException异常
                response = acsClient.GetAcsResponse(request);
                if (response.Code == "OK" && !string.IsNullOrEmpty(code))
                {
                    verifyCodeService.Add(new VerifyCode
                    {
                        AbsoluteExpirationUtcDateTime =
                            DateTime.Now.Add(TimeSpan.FromMinutes(accountSetting.PhoneCodeExpiration)),
                        VerifyProvider      = VerifyProvider.Phone,
                        VerifyCodeUsageType = VerifyCodeUsageType.验证码,
                        Destination         = Phone,
                        Code = code
                    });
                    await verifyCodeService.CommitAsync();
                }
            }
            catch (Aliyun.Acs.Core.Exceptions.ServerException e)
            {
                Console.WriteLine(e.ErrorCode);
            }
            catch (ClientException e)
            {
                Console.WriteLine(e.ErrorCode);
            }
            return(response);
        }
        public static void UpdateDomainRecords(DescribeDomainRecordsResponse.Record record)
        {
            IClientProfile            clientProfile = DefaultProfile.GetProfile("cn-hangzhou", CGlobalConfig.AccessKey, CGlobalConfig.AccessKeySecret);
            DefaultAcsClient          client        = new DefaultAcsClient(clientProfile);
            UpdateDomainRecordRequest request       = new UpdateDomainRecordRequest();

            request.RecordId = record.RecordId;
            request.RR       = record.RR;
            request.Type     = record.Type;
            request.Value    = record.Value;
            UpdateDomainRecordResponse response = client.GetAcsResponse(request);
        }
Beispiel #26
0
        public void BasicRpcStsTokenConnectionsTest()
        {
            BasicSessionCredentials basciCredential = new BasicSessionCredentials(this.GetBasicAccessKeyId(), this.GetBasicAccessKeySecret(), this.GetToken());
            DefaultProfile          profile         = DefaultProfile.GetProfile(this.regionId, this.GetBasicAccessKeyId(), this.GetBasicAccessKeySecret());
            DefaultAcsClient        client          = new DefaultAcsClient(profile, basciCredential);

            DescribeInstancesRequest  request  = new DescribeInstancesRequest();
            DescribeInstancesResponse response = client.GetAcsResponse(request);

            Assert.NotNull(response);
            Assert.True(0 <= response.TotalCount);
        }
Beispiel #27
0
        public static MessageReturn SendMessageCode(string pheone)
        {
            LogHelper.WriteLog("SendMessageCode start");
            LogHelper.WriteLog("短信认证手机号:" + pheone);
            MessageReturn        messageReturn = new MessageReturn();
            JavaScriptSerializer jsonSerialize = new JavaScriptSerializer();
            IClientProfile       profile       = DefaultProfile.GetProfile("cn-hangzhou", ConfigurationManager.AppSettings["AccessKeyID"].ToString(), ConfigurationManager.AppSettings["AccessKeySecret"].ToString());
            DefaultAcsClient     client        = new DefaultAcsClient(profile);
            CommonRequest        request       = new CommonRequest();

            request.Method  = MethodType.POST;
            request.Domain  = "dysmsapi.aliyuncs.com";
            request.Version = "2017-05-25";
            request.Action  = "SendSms";
            // request.Protocol = ProtocolType.HTTP;
            request.AddQueryParameters("PhoneNumbers", pheone);
            request.AddQueryParameters("SignName", ConfigurationManager.AppSettings["SignName"].ToString());
            request.AddQueryParameters("TemplateCode", ConfigurationManager.AppSettings["TemplateCode"].ToString());
            MessageNo messageNo = new MessageNo();
            Random    rd        = new Random();
            int       num       = rd.Next(100000, 1000000);

            messageNo.code = num.ToString();
            request.AddQueryParameters("TemplateParam", jsonSerialize.Serialize(messageNo));
            LogHelper.WriteLog("短信认证参数:" + jsonSerialize.Serialize(request.QueryParameters));
            try
            {
                CommonResponse response = client.GetCommonResponse(request);
                LogHelper.WriteLog("SendMessageCode response" + response);
                var sendSmsResponse = jsonSerialize.Deserialize <SendSmsResponse>(response.Data);
                if (sendSmsResponse.Code.Equals("OK"))
                {
                    LogHelper.WriteLog("SendMessageCode num" + num.ToString());
                    messageReturn.Status  = true;
                    messageReturn.Message = num.ToString();
                }
            }
            catch (ServerException e)
            {
                messageReturn.Status  = false;
                messageReturn.Message = e.Message;
                LogHelper.WriteLog("短信认证错误:" + jsonSerialize.Serialize(messageReturn.Message), e);
            }
            catch (ClientException e)
            {
                messageReturn.Status  = false;
                messageReturn.Message = e.Message;
                LogHelper.WriteLog("短信认证错误:" + jsonSerialize.Serialize(messageReturn.Message), e);
            }
            LogHelper.WriteLog("SendMessageCode end");
            return(messageReturn);
        }
        public void DoAction3()
        {
            // When
            // request.AcceptFormat is not null
            // request.ProductDomain is not null
            // domain is not null
            // response.Content is not null
            // response.Status != 200

            // Mock response
            int          status    = 400;
            string       code      = "ThisIsCode";
            string       message   = "ThisIsMessage";
            string       requestId = "ThisIsRequestId";
            HttpResponse response  = new HttpResponse();

            byte[] content = Encoding.GetEncoding("UTF-8").GetBytes("{\"Code\":\"" + code + "\",\"Message\":\"" + message + "\",\"RequestId\":\"" + requestId + "\"}");
            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = status;

            var mockInstance = new Mock <DefaultAcsClient>()
            {
                CallBase = true
            };

            mockInstance.Setup(foo => foo.GetResponse(
                                   It.IsAny <HttpRequest>()
                                   )).Returns(response);

            DefaultAcsClient instance = mockInstance.Object;

            // Mock AcsResquest
            MockAcsRequestForDefaultAcsClient request = new MockAcsRequestForDefaultAcsClient();

            request.AcceptFormat = FormatType.JSON;
            ProductDomain productDomain = new ProductDomain("productName", "productDomain");

            request.ProductDomain = productDomain;

            // Mock AlibabaCloudCredentials
            var mockCredentials = new Mock <AlibabaCloudCredentials>();
            AlibabaCloudCredentials credentials = mockCredentials.Object;

            // Mock Signer
            Signer signer = new HmacSHA1Signer();

            var result = instance.DoAction <AcsResponse>(request, true, 1, "cn-hangzhou", credentials, signer, FormatType.JSON, null);

            Assert.NotNull(result);
            Assert.Equal(result.Status, response.Status);
        }
Beispiel #29
0
        /// <summary>
        /// 批量发送短信
        /// </summary>
        /// <param name="phoneNums"></param>
        /// <param name="signs"></param>
        /// <param name="tempCode"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        private (bool isSuccess, string errMsg) SendSms(IList <string> phoneNums, IList <string> signs, string tempCode, Dictionary <string, string> param)
        {
            IClientProfile profile = DefaultProfile.GetProfile(Config.EndPoint, Config.SMSUId, Config.SMSPwd);

            profile.AddEndpoint(Config.EndPoint, Config.EndPoint, product, domain);

            IAcsClient          acsClient = new DefaultAcsClient(profile);
            SendBatchSmsRequest request   = new SendBatchSmsRequest();
            //request.Protocol = ProtocolType.HTTPS;
            //request.TimeoutInMilliSeconds = 1;

            SendBatchSmsResponse response = null;

            try
            {
                //必填:待发送手机号。支持JSON格式的批量调用,批量上限为100个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式
                request.PhoneNumberJson = phoneNums.ToJson(); //"[\"1500000000\",\"1500000001\"]";
                //必填:短信签名-支持不同的号码发送不同的短信签名
                request.SignNameJson = signs.ToJson();        //"[\"云通信\",\"云通信\"]";
                //必填:短信模板-可在短信控制台中找到
                request.TemplateCode = tempCode;              //"SMS_1000000";
                //必填:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
                //友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败
                //request.TemplateParamJson = "[{\"name\":\"Tom\", \"code\":\"123\"},{\"name\":\"Jack\", \"code\":\"456\"}]";
                //StringBuilder builder = new StringBuilder();
                //foreach (var item in param)
                //    builder.Append("{\"" + item.Key + "\":\"" + item.Value + "\"},");
                //request.TemplateParamJson = "[" + builder.ToString().TrimEnd(',') + "]";
                request.TemplateParamJson = param.ToJson();
                //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
                //request.SmsUpExtendCodeJson = "[\"90997\",\"90998\"]";

                //请求失败这里会抛ClientException异常
                response = acsClient.GetAcsResponse(request);
                if (response.Message == "OK")
                {
                    return(true, "");
                }
                else
                {
                    return(false, response.Message);
                }
            }
            catch (ServerException e)
            {
                return(false, e.ErrorCode + "|" + e.Message);
            }
            catch (ClientException e)
            {
                return(false, e.ErrorCode + "|" + e.Message);
            }
        }
Beispiel #30
0
        /// <summary>
        /// 从阿里云服务器获取域名记录信息
        /// </summary>
        /// <returns></returns>
        private string getAliDnsRecordDomainIP()
        {
            clientProfile = DefaultProfile.GetProfile("cn-hangzhou", textBox_accessKeyId.Text.ToString(), textBox_accessKeySecret.Text.ToString());
            client        = new DefaultAcsClient(clientProfile);
            DescribeDomainRecordInfoRequest request = new DescribeDomainRecordInfoRequest();

            request.RecordId = textBox_recordId.Text.ToString();
            try
            {
                DescribeDomainRecordInfoResponse response = client.GetAcsResponse(request);
                string fullDomain = response.RR.ToString() + "." + response.DomainName.ToString();
                if (response.Value != "0.0.0.0")
                {
                    if (fullDomain != fullDomainName.Text.ToString())
                    {
                        textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "阿里云DNS域名记录:" + response.RecordId + " 对应域名为:" + fullDomain + "\r\n");
                        textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "配置文件域名记录:" + textBox_recordId.Text.ToString() + " 对应域名为:" + fullDomainName.Text.ToString() + "\r\n");
                        textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "配置文件设置错误!可能原因是修改域名记录后未及时添加,已经自动修改配置文件与服务器记录一致!" + "\r\n");
                        fullDomainName.Text = fullDomain;
                        cfg.SaveAppSetting("fullDomainName", fullDomain);
                    }
                    textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "域名:" + response.RR + "." + response.DomainName + " 已经绑定IP:" + response.Value + "\r\n");
                    textBox_recordId.Text          = response.RecordId;
                    globalRR.Text                  = response.RR;
                    globalDomainType.Text          = response.Type;
                    globalValue.Text               = response.Value;
                    label_TTL.Text                 = Convert.ToString(response.TTL);
                    label_DomainIpStatus.Text      = "已绑定";
                    label_DomainIpStatus.ForeColor = System.Drawing.Color.FromArgb(0, 0, 0, 255);
                    return(response.Value);
                }
                textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "获取域名绑定IP失败!" + "\r\n");
            }
            //处理错误
            catch (Exception error)
            {
                textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "getAliDnsRecordDomainIP() Exception:  " + error + "\r\n");
            }

            /*
             * catch (ServerException e)
             * {
             *  textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "Server Exception:  " + e.ErrorCode + e.ErrorMessage + "\r\n");
             * }
             * catch (ClientException e)
             * {
             *  textBox_log.AppendText(System.DateTime.Now.ToString() + " " + "Client Exception:  " + e.ErrorCode + e.ErrorMessage + "\r\n");
             * }*/
            label_DomainIpStatus.Text      = "未绑定";
            label_DomainIpStatus.ForeColor = System.Drawing.Color.FromArgb(255, 255, 0, 0);
            return("0.0.0.0");
        }
Beispiel #31
0
        public static AssumeRoleResponse.Credentials_ GetSecurityToken()
        {
            if (credentials!=null&&(DateTime.Now-_timeStamp).Seconds<30)
            {
                //防止请求过于频繁,设置5分钟请求一次。
                return credentials;
            }
            // 构建一个 Aliyun Client, 用于发起请求
            // 构建Aliyun Client时需要设置AccessKeyId和AccessKeySevcret
            // STS是Global Service, API入口位于杭州, 这里Region填写"cn-hangzhou"
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            var client = new DefaultAcsClient(profile);

            // 构造AssumeRole请求
            var request = new AssumeRoleRequest();
            // 指定角色Arn
            request.RoleArn = "acs:ram::1724377057077130:role/myfirstrole";
            request.RoleSessionName = "alice";
            // 可以设置Token有效期,可选参数,默认3600秒;
            request.DurationSeconds = 3600;
            // 可以设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限;
            // request.Policy="<policy-content>"
            try
            {
                AssumeRoleResponse response = client.GetAcsResponse(request);
                //Console.WriteLine("AccessKeyId: " + response.Credentials.AccessKeyId);
                //Console.WriteLine("AccessKeySecret: " + response.Credentials.AccessKeySecret);
                //Console.WriteLine("SecurityToken: " + response.Credentials.SecurityToken);
                ////Token过期时间;服务器返回UTC时间,这里转换成北京时间显示;
                //Console.WriteLine("Expiration: " + DateTime.Parse(response.Credentials.Expiration).ToLocalTime());
                credentials = response.Credentials;
                _timeStamp = DateTime.Now;
                return credentials;
            }
            catch (Exception ex)
            {
                return null;
                //记录错误日志
            }
        }
Beispiel #32
0
        /// <summary>
        /// 获取临时访问权限
        /// </summary>
        /// <returns></returns>
        private static AssumeRoleResponse.Credentials_ GetSecurityToken()
        {
            // 构建一个 Aliyun Client, 用于发起请求
            // 构建Aliyun Client时需要设置AccessKeyId和AccessKeySevcret
            // STS是Global Service, API入口位于杭州, 这里Region填写"cn-hangzhou"
            IClientProfile profile = DefaultProfile.GetProfile("cn-hangzhou", accessKeyId, accessKeySecret);
            DefaultAcsClient client = new DefaultAcsClient(profile);

            // 构造AssumeRole请求
            AssumeRoleRequest request = new AssumeRoleRequest();
            // 指定角色Arn
            request.RoleArn = "acs:ram::1724377057077130:role/myfirstrole";
            request.RoleSessionName = "alice";
            // 可以设置Token有效期,可选参数,默认3600秒;
            //request.DurationSeconds = 3600;
            // 可以设置Token的附加Policy,可以在获取Token时,通过额外设置一个Policy进一步减小Token的权限;
            // request.Policy="<policy-content>"

            try
            {
                AssumeRoleResponse response = client.GetAcsResponse(request);

                Console.WriteLine("AccessKeyId: " + response.Credentials.AccessKeyId);
                Console.WriteLine("AccessKeySecret: " + response.Credentials.AccessKeySecret);
                Console.WriteLine("SecurityToken: " + response.Credentials.SecurityToken);
                //Token过期时间;服务器返回UTC时间,这里转换成北京时间显示;
                Console.WriteLine("Expiration: " + DateTime.Parse(response.Credentials.Expiration).ToLocalTime());
                return response.Credentials;
            }
            catch (Exception ex)
            {
                Console.Write(ex.ToString());
            }
            return null;
        }