【问题标题】:C# & ASP.NET MVC - images loading slowlyC# & ASP.NET MVC - 图像加载缓慢
【发布时间】:2017-01-18 23:48:56
【问题描述】:

我在一个页面上返回大约 20 个缩略图。问题是最后几个(总是在 5~ 左右)加载非常缓慢。

我是否像加载它们一样没有区别

using(FileStream ltFS = new FileStream(Server.MapPath("~/Themes/Content/Images/nocover.png"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))

return File(Server.MapPath("~/Themes/Content/Images/nocover.png"), "image/png");

我在谷歌上找到了这个

[SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)]

如果我尝试这样做,我会收到错误

SessionStateTempDataProvider 类需要启用会话状态。

【问题讨论】:

  • 这些请求是针对网络上的单独服务器计算机还是您向自己的计算机发出 localhost 请求?
  • 它们大小为 14kb,在同一台机器上。
  • 我知道这可能是配置错误,但我不知道去哪里寻找和注意什么。这是在 Visual Studio IIS Express 中,甚至在实时模式下。全新 IIS 7.5 安装时同样的问题。
  • 刚刚尝试了与您提供的示例相同的方式。 public FileStreamResult Cover(Guid pInternalBookId) { return new FileStreamResult(new FileStream(Server.MapPath("~/Themes/Content/Images/nocover.png"), FileMode.Open, FileAccess.ReadWrite), "image/png"); }
  • 在大多数 IIS 应用程序池配置中,可以同时运行的默认线程数是 5。但您需要几乎同时返回 20 个文件。尝试增加应用程序池的工作进程数。以管理员身份打开 IIS,在“连接”面板(左侧)上选择您的网站,单击“高级设置”并找出该站点的应用程序池。关闭,然后再次返回连接。找到您的应用程序池,转到高级设置(右键单击)并在进程模型下找到“最大工作进程”。增加这个数字。

标签: c# asp.net-mvc


【解决方案1】:

ASP.Net Web 应用程序中的每个请求在请求开始时都会获得一个会话锁,然后在请求结束时释放它!在此之前,来自用户的任何其他请求都将等待。 如果你在MVC方法中使用TempData或者Session那么会有asp.net会话锁会一一处理请求。这个属性 [SessionState(System.Web.SessionState.SessionStateBehavior.Disabled)] 只是为了避免 asp.net 会话锁定,错误意味着您在方法中的某处使用了 TempData 如果您没有更新会话,请尝试使用 [SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)] 代替

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 2014-02-04
    • 2012-07-16
    • 2018-10-17
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多