.NET使用Nuget阿里官方aliyun-net-sdk-core调用阿里云SMS
由于版本问题,阿里云SMS提供的相关dll只能与一同提供的aliyun-net-sdk-core配合使用,无法兼容Nuget上阿里官方上传的aliyun-net-sdk-core。如果在一个类库内封装多个阿里云相关功能,就会出现需要引用多个aliyun-net-sdk-core的情况,但是显然是不能如此引用的。
阿里云在提供SMS相关dll时提供了源码,查看过后,发现只要将相关功能需要的实体添加到项目中,然后调用Nuget上的aliyun-net-sdk-core即可。
SendSmsRequest:

1 public class SendSmsRequest : RpcAcsRequest<SendSmsResponse> 2 { 3 public SendSmsRequest() : base("Dysmsapi", "2017-05-25", "SendSms") 4 { 5 } 6 7 private string templateCode; 8 9 private string phoneNumbers; 10 11 private string accessKeyId; 12 13 private string signName; 14 15 private string resourceOwnerAccount; 16 17 private string templateParam; 18 19 private string action; 20 21 private long? resourceOwnerId; 22 23 private long? ownerId; 24 25 private string smsUpExtendCode; 26 27 private string outId; 28 29 public string TemplateCode 30 { 31 get 32 { 33 return templateCode; 34 } 35 set 36 { 37 templateCode = value; 38 DictionaryUtil.Add(QueryParameters, "TemplateCode", value); 39 } 40 } 41 42 public string PhoneNumbers 43 { 44 get 45 { 46 return phoneNumbers; 47 } 48 set 49 { 50 phoneNumbers = value; 51 DictionaryUtil.Add(QueryParameters, "PhoneNumbers", value); 52 } 53 } 54 55 public string AccessKeyId 56 { 57 get 58 { 59 return accessKeyId; 60 } 61 set 62 { 63 accessKeyId = value; 64 DictionaryUtil.Add(QueryParameters, "AccessKeyId", value); 65 } 66 } 67 68 public string SignName 69 { 70 get 71 { 72 return signName; 73 } 74 set 75 { 76 signName = value; 77 DictionaryUtil.Add(QueryParameters, "SignName", value); 78 } 79 } 80 81 public string ResourceOwnerAccount 82 { 83 get 84 { 85 return resourceOwnerAccount; 86 } 87 set 88 { 89 resourceOwnerAccount = value; 90 DictionaryUtil.Add(QueryParameters, "ResourceOwnerAccount", value); 91 } 92 } 93 94 public string TemplateParam 95 { 96 get 97 { 98 return templateParam; 99 } 100 set 101 { 102 templateParam = value; 103 DictionaryUtil.Add(QueryParameters, "TemplateParam", value); 104 } 105 } 106 107 public string Action 108 { 109 get 110 { 111 return action; 112 } 113 set 114 { 115 action = value; 116 DictionaryUtil.Add(QueryParameters, "Action", value); 117 } 118 } 119 120 public long? ResourceOwnerId 121 { 122 get 123 { 124 return resourceOwnerId; 125 } 126 set 127 { 128 resourceOwnerId = value; 129 DictionaryUtil.Add(QueryParameters, "ResourceOwnerId", value.ToString()); 130 } 131 } 132 133 public long? OwnerId 134 { 135 get 136 { 137 return ownerId; 138 } 139 set 140 { 141 ownerId = value; 142 DictionaryUtil.Add(QueryParameters, "OwnerId", value.ToString()); 143 } 144 } 145 146 public string SmsUpExtendCode 147 { 148 get 149 { 150 return smsUpExtendCode; 151 } 152 set 153 { 154 smsUpExtendCode = value; 155 DictionaryUtil.Add(QueryParameters, "SmsUpExtendCode", value); 156 } 157 } 158 159 public string OutId 160 { 161 get 162 { 163 return outId; 164 } 165 set 166 { 167 outId = value; 168 DictionaryUtil.Add(QueryParameters, "OutId", value); 169 } 170 } 171 172 public override SendSmsResponse GetResponse(UnmarshallerContext unmarshallerContext) 173 { 174 SendSmsResponse sendSmsResponse = new SendSmsResponse 175 { 176 HttpResponse = unmarshallerContext.HttpResponse, 177 RequestId = unmarshallerContext.StringValue("SendSms.RequestId"), 178 BizId = unmarshallerContext.StringValue("SendSms.BizId"), 179 Code = unmarshallerContext.StringValue("SendSms.Code"), 180 Message = unmarshallerContext.StringValue("SendSms.Message") 181 }; 182 183 return sendSmsResponse; 184 } 185 }
SendSmsResponse:

1 public class SendSmsResponse : AcsResponse 2 { 3 public new string RequestId { get; set; } 4 5 public string BizId { get; set; } 6 7 public string Code { get; set; } 8 9 public string Message { get; set; } 10 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类