C# ASP.NET Core razor异步中的HttpClient卡滞

C# ASP.NET Core razor异步中的HttpClient卡滞,c#,api,asp.net-core,async-await,httpclient,C#,Api,Asp.net Core,Async Await,Httpclient,我在使用ASP.NET Core与IIS中托管的应用程序(不是IIS Express)时遇到问题 这是我的配置: 启动: services.addHttpClient() 第页: 问题是:当我执行页面时,我从未得到页面的响应(测试)。它只发生在IIS上,而不发生在IIS Express上。有什么问题吗 更新: 新测试..使用简单asp核心控制台没有响应。 代码 这意味着什么: 结果: 本地马喹: 5秒后显示错误。。 服务器: 你好,世界! _ …10分钟后代码仍在运行..无应答错误或完成进程

我在使用ASP.NET Core与IIS中托管的应用程序(不是IIS Express)时遇到问题

这是我的配置:

启动:

services.addHttpClient()
第页:

问题是:当我执行页面时,我从未得到页面的响应(测试)。它只发生在IIS上,而不发生在IIS Express上。有什么问题吗

更新: 新测试..使用简单asp核心控制台没有响应。 代码

这意味着什么: 结果: 本地马喹: 5秒后显示错误。。 服务器: 你好,世界! _ …10分钟后代码仍在运行..无应答错误或完成进程

似乎是服务器出了问题……不知道为什么


更新:查看服务器后..WinHttp服务已停止..如果我尝试手动启动,则出现错误..重新启动服务器解决了问题..服务正常启动,来自应用程序的请求正确..

WinHttp服务已停止..无法手动运行。。重新启动服务器后,服务将正确启动,所有程序和测试均成功。

能否提供控制器和完整页面代码?现在还不清楚您的预期结果是什么,当您说它只发生在IIS上而不是IIS Express上时,您的意思是什么?发生了什么?是您的api(即:
http://localhost:37199/
)可从浏览器访问?永远不会得到该页面的响应-这是一个抽象描述。它必须在错误中返回成功或失败的响应。您应该添加日志记录以注销所有错误,以查看生产中出现的问题(据我所知,您将代码部署到
IIS
服务器)。添加一些日志记录以获取卡住的位置。或者使用PerfView捕获跟踪。或者捕获内存转储并对其进行分析(DebugDiag.Analysis)。或者使用dotnet堆栈查看挂起的位置。“justhangs”有时表示线程处于死锁状态。尝试添加到SendAsync
private readonly IHttpClientFactory _clientFactory;

public testModel(IHttpClientFactory clientFactory)
{
    _clientFactory = clientFactory;
}

public async void OnGet()
{
    var client = _clientFactory.CreateClient();
    client.BaseAddress = new Uri("http://localhost:37199/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    // GET Method  
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "apiprueba/test");
    var response = await client.SendAsync(request);            
}
static async System.Threading.Tasks.Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var client = new HttpClient();
            client.BaseAddress = new Uri("http://127.0.0.1:88/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            //GET Method  
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "api/mensaje");
            client.Timeout = TimeSpan.FromSeconds(30);
            var response = await client.SendAsync(request).ConfigureAwait(false);
            Console.WriteLine(response.ToString());
            Console.WriteLine("Finished");
        }