架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 306|回复: 0

【网络异常】访问本站无法登录、验证码不显示等解决方案

[复制链接]
跳转到指定楼层
楼主
发表于 2019-9-20 23:07:06
zu
由于本站使用了智能dns解析,国内用户解析到阿里云服务器,国外用户解析到亚马逊的cdn服务。

Because the site uses intelligent dns analysis, domestic users resolve to Alibaba Cloud server, and foreign users resolve to Amazon's cdn service.

独立IP 34个,如下图:

34 independent IP, as shown below:




可能会导致国外用户打开网站速度非常快,但是无法正常登录,例如:无法登录、验证码不显示、登录后不显示登录状态等等异常错误。

It may cause foreign users to open the website very quickly, but it cannot log in normally. For example, it is impossible to log in, the verification code is not displayed, the login status is not displayed after login, and so on.

解决方案:

solution:

可以通过系统hosts文件,使用域名重定向直接解析到服务器的ip地址,即可解决。

It can be solved by directly resolving the ip address of the server through the system hosts file and using domain name redirection.

正确服务器ip地址接口:http://www.xcukye.cn/tool/server_ip.html

The correct server ip address interface: http://www.xcukye.cn/tool/server_ip.html

可以通过下载软件工具,如果域名解析ip地址和接口地址不一致,软件自动修改hosts文件,如下图:
You can download the software tool. If the domain name resolution ip address and interface address are inconsistent, the software automatically modifies the hosts file, as shown below:



工具下载地址:http://www.xcukye.cn/tool/NetworkTool.zip

Tool download address: http://www.xcukye.cn/tool/NetworkTool.zip

程序源码:

Program source code:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Security.Principal;
  7. using System.Text;

  8. namespace NetworkTool
  9. {
  10.     class Program
  11.     {
  12.         private const string LINE = "\r\n";
  13.         private const string DOMAIN = "www.xcukye.cn";
  14.         private const string SERVER_API = "http://www.xcukye.cn/tool/server_ip.html";
  15.         static void Main(string[] args)
  16.         {
  17.             bool isElevated;
  18.             using (WindowsIdentity identity = WindowsIdentity.GetCurrent())
  19.             {
  20.                 WindowsPrincipal principal = new WindowsPrincipal(identity);
  21.                 isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
  22.             }
  23.             if (!isElevated)
  24.             {
  25.                 Console.WriteLine($"请右击程序使用管理员身份运行!{LINE}Please right click on the program to run as an administrator!");
  26.             }
  27.             else
  28.             {
  29.                 try
  30.                 {
  31.                     ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
  32.                     //获取远程接口服务器正确的ip地址
  33.                     WebClient webClient = new WebClient();
  34.                     string server_ip = webClient.DownloadString(SERVER_API);
  35.                     Console.WriteLine($"远程接口正确IP地址为:{server_ip}{LINE}The correct IP address of the remote interface is:{server_ip}");
  36.                     string disk = Environment.GetEnvironmentVariable("systemdrive");
  37.                     string path = disk + @"\WINDOWS\system32\drivers\etc\hosts";
  38.                     Console.WriteLine($"正在解析域名 www.xcukye.cn 地址。{LINE}Resolving domain name www.xcukye.cn address.");
  39.                     IPAddress[] IPs = Dns.GetHostAddresses(DOMAIN);
  40.                     string ip = IPs[0].ToString();
  41.                     Console.WriteLine($"解析的IP地址为:{ip}。{LINE}The resolved IP address is:{ip}");
  42.                     if (!ip.Equals(server_ip))
  43.                     {
  44.                         Console.WriteLine($"正在修改 hosts 使用域名重定向!{LINE}Modifying hosts using domain name redirection!");
  45.                         //通常情况下这个文件是只读的,所以写入之前要取消只读
  46.                         File.SetAttributes(path, File.GetAttributes(path) & (~FileAttributes.ReadOnly));//取消只读
  47.                         FileStream fs = new FileStream(path, FileMode.Append);
  48.                         //2.创建写入器
  49.                         StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
  50.                         //3.开始写入
  51.                         bool result = false;//标识是否写入成功
  52.                         try
  53.                         {
  54.                             StringBuilder sb = new StringBuilder();
  55.                             sb.Append(server_ip);
  56.                             sb.Append(" ");
  57.                             sb.Append(DOMAIN);
  58.                             sw.WriteLine(sb.ToString());
  59.                             result = true;
  60.                         }
  61.                         catch (Exception ex)
  62.                         {
  63.                             result = false;
  64.                         }
  65.                         finally
  66.                         {
  67.                             //4.关闭写入器
  68.                             if (sw != null)
  69.                             {
  70.                                 sw.Close();
  71.                             }
  72.                             //5.关闭文件流
  73.                             if (fs != null)
  74.                             {
  75.                                 fs.Close();
  76.                             }
  77.                         }
  78.                         if (result == true)
  79.                         {
  80.                             Console.WriteLine($"更新成功!{LINE}update completed");
  81.                             File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);//设置只读
  82.                         }
  83.                         else
  84.                         {
  85.                             Console.WriteLine($"写入失败{LINE}Write failure");
  86.                         }
  87.                     }
  88.                     else
  89.                     {
  90.                         Console.WriteLine($"解析地址正确!{LINE}Parse the address correctly!");
  91.                     }
  92.                     Console.WriteLine();
  93.                 }
  94.                 catch (Exception ex)
  95.                 {
  96.                     Console.WriteLine($"程序异常!{LINE}The program is abnormal!");
  97.                     Console.WriteLine(ex);
  98.                 }
  99.             }
  100.             Console.ReadKey(true);
  101.         }
  102.     }
  103. }
复制代码









上一篇:C#获取当前系统磁盘符、系统目录、桌面等
下一篇:《Python数据可视化编程实战》pdf带书签
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-11-14 00:58

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
即时比分新浪