diff --git a/FastGithub.Upgrade/FastGithub.Upgrade.csproj b/FastGithub.Upgrade/FastGithub.Upgrade.csproj
index ddaba9e..a870eac 100644
--- a/FastGithub.Upgrade/FastGithub.Upgrade.csproj
+++ b/FastGithub.Upgrade/FastGithub.Upgrade.csproj
@@ -1,11 +1,15 @@
-
- net5.0
-
+
+ net5.0
+
-
-
-
+
+
+
+
+
+
+
diff --git a/FastGithub.Upgrade/ReverseProxyHttpHandler.cs b/FastGithub.Upgrade/ReverseProxyHttpHandler.cs
new file mode 100644
index 0000000..48d43ce
--- /dev/null
+++ b/FastGithub.Upgrade/ReverseProxyHttpHandler.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Net;
+using System.Net.Http;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace FastGithub.Upgrade
+{
+ ///
+ /// 本机反向代理的httpHandler
+ ///
+ sealed class ReverseProxyHttpHandler : DelegatingHandler
+ {
+ ///
+ /// 本机反向代理的httpHandler
+ ///
+ public ReverseProxyHttpHandler()
+ {
+ this.InnerHandler = new HttpClientHandler();
+ }
+
+ ///
+ /// 替换为Loopback
+ ///
+ ///
+ ///
+ ///
+ protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
+ {
+ var uri = request.RequestUri;
+ if (uri != null && uri.HostNameType == UriHostNameType.Dns)
+ {
+ var domain = uri.Host;
+ var builder = new UriBuilder(uri) { Host = IPAddress.Loopback.ToString() };
+
+ request.RequestUri = builder.Uri;
+ request.Headers.Host = domain;
+ }
+
+ return await base.SendAsync(request, cancellationToken);
+ }
+ }
+}
diff --git a/FastGithub.Upgrade/UpgradeHostedService.cs b/FastGithub.Upgrade/UpgradeHostedService.cs
index 8c9e1ce..ad97f32 100644
--- a/FastGithub.Upgrade/UpgradeHostedService.cs
+++ b/FastGithub.Upgrade/UpgradeHostedService.cs
@@ -33,7 +33,7 @@ namespace FastGithub.Upgrade
///
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
- var maxTryCount = 3;
+ var maxTryCount = 5;
for (var i = 1; i <= maxTryCount; i++)
{
try
diff --git a/FastGithub.Upgrade/UpgradeService.cs b/FastGithub.Upgrade/UpgradeService.cs
index 07a507d..94c54b3 100644
--- a/FastGithub.Upgrade/UpgradeService.cs
+++ b/FastGithub.Upgrade/UpgradeService.cs
@@ -59,7 +59,10 @@ namespace FastGithub.Upgrade
///
public async Task GetLastedReleaseAsync(CancellationToken cancellationToken)
{
- using var httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(30d) };
+ using var httpClient = new HttpClient(new ReverseProxyHttpHandler())
+ {
+ Timeout = TimeSpan.FromSeconds(30d),
+ };
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*"));
httpClient.DefaultRequestHeaders.UserAgent.Add(new ProductInfoHeaderValue(nameof(FastGithub), "1.0"));