Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure应用程序服务ASP.NET MVC项目中的RedisTimeoutException_C#_Asp.net Mvc_Azure_Session_Redis - Fatal编程技术网

C# Azure应用程序服务ASP.NET MVC项目中的RedisTimeoutException

C# Azure应用程序服务ASP.NET MVC项目中的RedisTimeoutException,c#,asp.net-mvc,azure,session,redis,C#,Asp.net Mvc,Azure,Session,Redis,我在ASP.NET MVC应用程序中使用RedisessionStateProvider作为会话提供程序时遇到了一个奇怪的问题。 我有下一个代码(简化了一点),它从数据库中获取图像,然后存储到会话中,但若图像已经在会话中,但散列不同,那个么更新存储的图像。如果不是-仅从会话返回图像,而不从DB获取图像 public FileResult GetImage( int entityId, string imageHash) { var stor

我在ASP.NET MVC应用程序中使用RedisessionStateProvider作为会话提供程序时遇到了一个奇怪的问题。 我有下一个代码(简化了一点),它从数据库中获取图像,然后存储到会话中,但若图像已经在会话中,但散列不同,那个么更新存储的图像。如果不是-仅从会话返回图像,而不从DB获取图像

public FileResult GetImage(
        int entityId,
        string imageHash)
    {
        var storedImage =
            this.ImagesList.FirstOrDefault(
                i => i.EntityId == entityId);
        if (storedImage != null && storedImage.ImageHash == imageHash)
        {
            return this.File(storedImage.Content, "image/png", "Image.png");
        }
        //// Here I get image from DB
        if (storedImage != null)
        {
            //// Here I update image stored in Redis if it's changed
        }
        else
        {
            //// Here I insert image into Redis
        }
        return this.File(resizedImage, "image/png", "Image.png");
    }
其中this.ImagesList是存储在会话中的图像列表,但因为我使用RedisSessionStateProvider,所以它存储在Redis中。所以我不直接与Redis合作

然后,我在前端中获取图像,将src定义为ImageController的GetImage操作的Url。正如我最后发现的那样,这不是一个好方法,我们将重新制作它,但我想找出超时的原因,因为我们将在应用程序中使用Redis缓存作为会话存储,以满足其他需求

图像大小不大。我不认为有图像1MB。更有可能是最大100Kb

因此,当我加载包含图像(15-20条记录)的记录列表时,我经常会遇到下一个异常:

执行评估超时,指令:7,管理器:不活动,错误:从不,队列:0, qu:0,qs:0,qc:0,wr:0,wq:0,in:0,ar:0,客户名称: RD00155D62D65A,serverEndpoint:未指定/…,keyHashSlot: 5043,IOCP:(忙=0,空闲=1000,最小=1,最大=1000),工作者: (忙=7,闲=8184,最小=1,最大=8191)(请看这篇文章 对于一些可能导致超时的常见客户端问题: )

我已经阅读了在应用程序中的异常文章和固定线程池中指定的设置IOCP min=20和Workers min=25。但我得到了同样的例外:

引发了类型为“System.Web.HttpException”的异常。超时 正在执行评估,指令:1,经理:不活动,错误:从不,队列:12,qu:0, qs:12,qc:0,wr:0,wq:0,in:65536,ar:0,客户名称: RD00155D62D65A,服务器端点: 未指定的/…,keyHashSlot: 5043,IOCP:(忙=1,空闲=999,最小=20,最大=1000),工作者: (忙=8,闲=8183,最小=25,最大=8191)(请看这篇文章 对于一些可能导致超时的常见客户端问题: )

我发现可能的问题是异常的下一个属性:

传真:65536

这是根据第条:

你也可以看到:64221。这表示64211字节已被删除 已在内核套接字层接收,但尚未被 应用程序(例如StackExchange.Redis)。这通常意味着 应用程序从网络读取数据的速度不如 服务器正在将其发送给您

但是如何在我的基础设施中处理这个问题——我还不明白