.NET Core Web api 调用 ERR_CONNECTION_RESET 仅在 IIS 上 - 其他调用有效

编程代码

1个回答

写回答

赵梦雨

2025-07-09 07:40

+ 关注

互联网
互联网

近年来,随着互联网技术的迅速发展,越来越多的应用程序开始采用Web API作为其后端服务的一部分。.NET Core Web API是一个流行的框架,它提供了一种简洁高效的方式来构建可扩展的、跨平台的Web API。但是,有时候我们可能会遇到一些问题,例如在使用IIS部署.NET Core Web API时,我们可能会遇到ERR_CONNECTION_RESET错误,而其他调用则正常工作。本文将探讨这个问题,并提供一些解决方案。

## 问题描述

当我们在使用IIS部署.NET Core Web API时,有时候会遇到ERR_CONNECTION_RESET错误。这个错误通常会在浏览器中显示,表示与服务器的连接被重置。但是令人困惑的是,其他调用(例如在本地开发环境中)可能正常工作,只有在IIS上才会出现这个问题。

## 问题原因

出现ERR_CONNECTION_RESET错误的原因可能有很多,但是在这种情况下,最常见的原因是IIS的配置问题。在默认情况下,IIS对于请求的大小有一些限制,如果请求的内容超过了这个限制,IIS会主动断开与客户端的连接,从而导致ERR_CONNECTION_RESET错误的出现。

## 解决方案

为了解决这个问题,我们需要调整IIS的配置,以允许更大的请求内容。下面是一些解决方案:

调整请求限制

我们可以通过修改IIS的web.config文件来调整请求的大小限制。在web.config文件中,我们可以找到节点,然后在其中添加或修改以下配置:

XML

<security>

<requestFiltering>

<requestLimits maxAllowedContentLength="524288000" />

</requestFiltering>

</security>

在上面的配置中,我们将maxAllowedContentLength属性设置为524288000,这表示允许的最大请求内容为500MB。您可以根据实际需要进行调整。

使用Kestrel作为反向代理

另一种解决方案是使用Kestrel作为反向代理。Kestrel是.NET Core的默认Web服务器,它可以直接与客户端进行通信,而不需要经过IIS。通过使用Kestrel作为反向代理,我们可以避免IIS的限制,并且更灵活地配置我们的Web API。

要使用Kestrel作为反向代理,我们需要在Startup.cs文件中进行一些配置。具体来说,我们需要添加以下代码:

csharp

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

{

// ...

app.UseRouting();

app.UseEndpoints(endpoints =>

{

endpoints.MapReverseProxy();

});

}

上面的代码将会将所有的请求转发到Kestrel服务器,从而绕过IIS的限制。

##

在本文中,我们讨论了在使用IIS部署.NET Core Web API时可能遇到的ERR_CONNECTION_RESET问题。我们发现这个问题通常是由于IIS的配置问题导致的,我们可以通过调整IIS的配置或使用Kestrel作为反向代理来解决这个问题。希望这些解决方案能够帮助您解决类似的问题,并顺利部署您的.NET Core Web API。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号