首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用客户端证书时,大型POST请求会导致Asp.Net Web中的超时

使用客户端证书时,大型POST请求会导致Asp.Net Web中的超时
EN

Stack Overflow用户
提问于 2020-01-28 09:22:15
回答 1查看 1.1K关注 0票数 3

背景

我们的API允许用户上传大文件,如PDF、JPGs和PNG。最近,我们经历了大量的请求,当服务器已经空闲了一段时间时,就会超时。我们的客户将经历2分钟的等待时间,然后收到500错误消息。

我们使用Azure管理为客户提供文档和访问API。

客户端-> API管理-> Web应用程序

但是,在深入了解之后,很明显,问题在API和我们的Web之间,这正是我们设置SSL证书的地方。

The issue

问题似乎在于发送包含SSL证书的大型POST请求以“唤醒”API使其陷入死锁。我也使用应用程序洞察力对API进行了调试,但似乎任何操作都没有接收到请求。

在调试了一个全新的Web API项目和Web应用程序问题之后,我将其缩小到只有在以下情况下才会发生超时:

  • 服务器仅配置为所需的HTTPS和/或客户端证书。
  • 在发送我的第一个请求之前,我让服务器运行5-10分钟。
  • 我的第一个请求包含一个大文件,比如一个2MB的PDF文件。

为了调试该问题,我设置了以下资源。

Web

我创建了一个全新的项目,ASP.NET Web,Framework4.6。我只添加了一个简单的文件控制器。

代码语言:javascript
复制
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace DebugCertificate.API.Controllers
{
    public class FilesController : ApiController
    {

        public HttpResponseMessage Post()
        {
            // Success
            return Request.CreateResponse(HttpStatusCode.OK, "Welcome to the POST files resource!");
        }

        public HttpResponseMessage Get()
        {
            // Success
            return Request.CreateResponse(HttpStatusCode.OK, "Welcome to the GET files resource!");
        }

    }
}

网络应用程序

我设置了一个全新的Azure Web应用程序,并将其配置为以下设置。

使用邮递员复制问题的步骤:

  1. 等5-10分钟。
  2. 向/api/files资源发送POST请求,其中包含一个大文件(本例中为2MB)。
  3. 超时发生在120秒之后。
  4. 只要您只发送大量的POST请求,就可以重复步骤2。

请注意,我甚至不需要发送带有此请求的客户端证书,就会发生此问题。

问题不会发生

  • 当需要时,客户端证书和HTTPS仅为关闭。
  • 当您首先发送GET /api/file请求时,在5-10分钟内发送上述步骤2中描述的相同的POST请求。

可能导致

在诊断Azure中的Web应用程序之后,我发现了这些请求生成的错误。我在谷歌上搜索了这个描述,但是没有找到任何信息来解决我的问题。

我发现了一些听起来类似的东西,但这篇文章听起来像是在客户机和API管理之间,这不是我们设置SSL证书的地方。找绿色提示盒。

API管理中如何使用客户端证书身份验证保护API

我还发现这篇文章包含了一些解决这个问题的方法,但是用额外的请求“启动”API似乎有点麻烦。

当服务器处理大型PUT/POST请求时,HTTPS客户端证书请求冻结

问题

  1. 为什么会发生这种情况?
  2. 有什么解决办法不涉及“启动”API吗?也许是一个简单的Web.config设置?

如果需要更多的信息,现在让我来!

EN

回答 1

Stack Overflow用户

发布于 2020-01-29 00:46:20

转到自定义域下的域,单击“代理域名”,然后勾选“协商客户端证书”选项。

如果使用的是消费层,则启用“请求客户端证书”选项。

https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59945532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档