我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

前言

动态域名解析(DNSR)通常用于解析 IP 地址经常变化的域名。 电信网络提供公共IP,给程序员远程工作和内容共享带来极大的便利。 但公网IP是动态的,经常变化,因此通过IP访问非常不友好。 因此,有必要引入“花生壳”等动态域名解析工具。 这些解析工具有很多限制。 例如,免费版只能使用指定的二级域名、解析类型很少、对域名数量有限制等。

幸运的是我们有.NET! (借助阿里云)只需几行.NET代码即可轻松完成动态域名解析。

动态域名解析过程获取自己的IP地址

如今,互联网上有很多网站、服务或API可以快速获取您的IP地址。 比如你在百度上就可以轻松找到,国外也有其他的服务,非常好用。 这些服务也可以在 .NET 中完成,只需几行简短的代码,然后部署到服务器

  1. async Task Main()

  2. {

  3. await WebHost

  4. .CreateDefaultBuilder()

  5. .UseStartup<UserQuery>()

  6. .Build()

  7. .RunAsync();

  8. }


  9. public void ConfigureServices(IServiceCollection services) {}


  10. public void Configure(IApplicationBuilder app) =>

  11. app.Run(ctx => ctx.Response.WriteAsync(ctx.Connection.RemoteIpAddress.ToString()));

我已将代码部署到服务器上。 域名为:供有需要的朋友测试。

更新 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. DescribeDomainRecordsResponse.DescribeDomainRecords_Record homeRecord = domainRecords.First(x => x.RR == "cool");

  10. if (homeRecord._Value != currentIp)

  11. {

  12. client.GetAcsResponse(new UpdateDomainRecordRequest

  13. {

  14. RecordId = homeRecord.RecordId,

  15. RR = homeRecord.RR,

  16. Type = homeRecord.Type,

  17. _Value = currentIp,

  18. });

  19. }

然后把这个脚本添加到电脑的启动项中,这样我每次打开电脑时都能保证拥有最新的本地IP。

阿里云的SDK设计有点棘手。 客户端只有一种方法:(T)。 这很不方便。 很难一眼看出到底调用了哪些方法。 其次,也会让调用者感到困惑。 这显然是一个更新操作。 为什么要调用Get?

相比之下,虽然我的域名是绑定阿里云的,但腾讯云提供的SDK就方便很多了。

如果不是80端口怎么办?

默认情况下,80/443端口不允许对外开放。 因此,即使有绑定了动态域名,以后发送给客户时,URL中也会包含很长的端口名,如:44300。在DNS记录类型中,有很多方法可以解决这个问题。 您可以指定 SRV 或显式 URL 或隐式 URL 来解决此问题:

免费域名解析_域名解析免费网站_域名解析免费版和收费版的区别

这个过程可以通过C#代码完成,代码如下:

  1. client.GetAcsResponse(new AddDomainRecordRequest

  2. {

  3. DomainName = "starworks.cc",

  4. RR = "cool",

  5. Type = "SRV",

  6. _Value = "0 5 44403 home.starworks.cc",

  7. }

这样,只要在浏览器中输入:,就会自动显示my:44403的内容:

总结

文章中的“祖典”链接如下。 您可以随意下载并使用。 打开它:

使用时只需将我的域名替换为你的域名即可。

管理界面操作如下:

说实话,我不太关心.NET 未来会发展成什么样子。 相比之下,我更关心我可以立即使用 .NET 做什么。 ..0已经发布了,我还没来得及仔细看看它的新特性,但是.NET现在能提供给我的想象力已经很丰富了。 这或许就是我心中的“自由”:只要探索,总会有新的东西。 发现。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/252.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线