C# Web 应用程序中的 HttpClient 超时

问题描述 投票:0回答:1

下面的代码在控制台应用程序中运行良好。

当它在 Web 应用程序中的 IIS 上运行时,它会在 client.GetAync(URL) 行上超时。

有什么想法吗?

       static async Task<byte[]> GetLogo(string URL, string AccessToken)
   {
       byte[] imageData = null;

       using (HttpClient client = new HttpClient())
       {
           client.DefaultRequestHeaders.Authorization = new   AuthenticationHeaderValue("Authorization", "Bearer " + AccessToken);
           HttpResponseMessage response = await client.GetAsync(URL);
           if (response.IsSuccessStatusCode)
           {
               imageData = await response.Content.ReadAsByteArrayAsync();

           }

       }

       return imageData;
   }

谢谢,

c# asp.net asp.net-web-api dotnet-httpclient
1个回答
0
投票

在 Windows 中搜索“事件查看器”,然后导航到 Windows 日志文件夹,最后打开“应用程序”部分。在此页面中,您可以查看IIS错误日志。

您还可以通过 Web.config 文件记录错误。 下面,我为您提供了一个示例 Web.config 文件。请注意,此 Web.config 文件基于 .NET 8 另外,您需要将 'YourAppName' 替换为您的应用程序的名称。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\YourAppName.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

另外,请注意“\logs\stdout”文件夹应与 Web.Config 文件一起存在,并且应授予它们适当的访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.