0

我正在尝试获取 .NET Core 3.1 工作人员服务await client.GetAsync中网站的状态仅挂在主机的 ERR_CONNECTION_REFUSED 上

程序.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
               .UseWindowsService()
               .ConfigureServices((hostContext, services) =>
                    {
                        services.AddHostedService<Worker>();
                        services.AddHttpClient();
                    });

工人构造函数

   public Worker(ILogger<Worker> logger, IConfiguration configuration, IHttpClientFactory clientFactory)
    {
        _logger = logger;
        _configuration = configuration;
        _clientFactory = clientFactory;
    }

稍后在 ExecuteAsync 方法中的 worker 中。

var client = _clientFactory.CreateClient();
var Siteresult = await client.GetAsync(_siteAdress);

来自服务器的 ERR_CONNECTION_REFUSED 是我们可以让这个失败的唯一方法。工作人员没有恢复,我们通过关闭 IIS 中的站点来复制这一点(当我们关闭应用程序池时,我们会得到一个有用的 503 并且运行良好)我们在 chrome 中浏览到该站点并获得 ERR_CONNECTION_REFUSED 但工作人员只是挂起。

4

1 回答 1

0

万一其他人想知道,根据文档文档,异步调用需要使用 try-catch

        bool siteDown=false;

        try
        {
            HttpResponseMessage response = await client.GetAsync(_siteAdress);
            response.EnsureSuccessStatusCode();

        }  
        catch(HttpRequestException e)
        {
            siteDown = true; 
            _logger.LogError("Message :{0} ", e.Message);

        }
于 2020-04-05T07:46:46.280 回答