系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 网络编程 > ASP.NET > 详细页面

用.NET做动态域名解析的方法示例

时间:2020-02-03来源:系统城作者:电脑系统城

动态域名解析,或DNSR,通常用于解析IP地址经常变化的域名。电信网络提供了公网IP,给广大程序员远程办公、内容分享等方面带来了极大的便利。但公网IP是动态的,它会经常变化,因此通过IP的方式访问非常不友好。因此就需要引入“花生壳”等动态域名解析工具,这类解析工具限制很多,如免费版只能使用指定的二级域名,解析的各类很少,域名数量有限制等等。

还好我们有.NET(和阿里云)通过简短的几行.NET代码,即可轻松完成动态域名解析。

动态域名解析的过程

  • 第一步 知道自己的IP地址
  • 第二步 更新DNSIP解析值

获取自己的IP地址

现在网上有许多网站、服务或者API可以快速获取自己的IP地址,如随手在百度上可以找到http://www.ip138.com/,国外还有https://www.ipify.org/等服务,都挺好用。这些服务.NET也可以做,只需几行简短的代码,然后部署到服务器上:


 
  1. async Task Main()
  2. {
  3. await WebHost
  4. .CreateDefaultBuilder()
  5. .UseStartup<UserQuery>()
  6. .Build()
  7. .RunAsync();
  8. }
  9.  
  10. public void ConfigureServices(IServiceCollection services) {}
  11.  
  12. public void Configure(IApplicationBuilder app) =>
  13. app.Run(ctx => ctx.Response.WriteAsync(ctx.Connection.RemoteIpAddress.ToString()));

我已经将该代码部署到了服务器上,域名是:https://echo-ip.starworks.cc,可供有需要的朋友测试。

更新DNS解析值

各大域名网站都有自己的DNS解析API或者SDK,阿里云也不例外,我可以通过几行简短的C#代码即可更新DNS解析值:


 
  1. // 安装NuGet包:aliyun-net-sdk-alidns
  2. string currentIp = new WebClient().DownloadString("https://echo-ip.starworks.cc/");
  3. var client = new DefaultAcsClient(DefaultProfile.GetProfile("",Util.GetPassword("aliyun_dns_access_key"), Util.GetPassword("aliyun_dns_secret_key")));
  4. var domainRecords = client.GetAcsResponse(new DescribeDomainRecordsRequest
  5. {
  6. DomainName = "starworks.cc",
  7. RRKeyWord = "cool",
  8. }).DomainRecords;
  9.  
  10. DescribeDomainRecordsResponse.DescribeDomainRecords_Record homeRecord =domainRecords.First(x => x.RR == "cool");
  11. if (homeRecord._Value != currentIp)
  12. {
  13. client.GetAcsResponse(new UpdateDomainRecordRequest
  14. {
  15. RecordId = homeRecord.RecordId,
  16. RR = homeRecord.RR,
  17. Type = homeRecord.Type,
  18. _Value = currentIp,
  19. });
  20. }

然后将该脚本添加到电脑的开机启动项,这样每次开机时,即可确保我的cool.starworks.cc为最新的本地IP了。

阿里云的SDK设计有点取巧了,客户端DefaultAcsClient只有一个方法:GetAcsResponse<T>(T request),这样一来不太方便,可以调用哪些方法不能一目了然,二来还会让调用方感觉很迷惑,明明是更新操作,为什么要调用Get

与此相比,腾讯云提供的SDK就人性化很多,虽然我的域名绑定在阿里云上。

分享到:

相关信息

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载