相关疑难解决方法(0)

在ASP.Net MVC中禁用每个请求的会话状态

我在ASP.Net MVC中创建一个ActionResult来提供图像.启用会话状态后,IIS将一次只处理来自同一用户的一个请求.(这不仅适用于MVC.)

因此,在具有多个图像回调此Action的页面上,一次只能处理一个图像请求.这是同步的.

我希望这个图像Action是异步的 - 我希望每次执行多个图像请求而不需要前一个完成.(如果图像只是静态文件,IIS会以这种方式为它们提供服务.)

所以,我想禁用Session仅用于对该Action的调用,或者指定某些请求没有Session状态.任何人都知道如何在MVC中完成这项工作?谢谢!

asp.net asp.net-mvc asynchronous session-state actionresult

46
推荐指数
5
解决办法
3万
查看次数

ASP.NET MVC中的Page.EnableSessionState等效项

使用ASP.NET WebForms,可以在页面指令中设置会话状态模式:

<%@ Page EnableSessionState="true|false|ReadOnly" %>
Run Code Online (Sandbox Code Playgroud)

ASP.NET MVC中是否也可以使用相同的配置(例如,每个控制器或每个操作),如果是,如何?

(换句话说:我可以禁用或设置每个控制器/操作的只读会话状态吗?我假设会话状态读/写会导致一些开销,所以如果没有关闭会话状态可能会有用需要.)

asp.net-mvc session-state

15
推荐指数
2
解决办法
6753
查看次数

即使使用禁用的Session,ASP.NET MVC 5并发请求也会排队

在考虑downvoting或告诉我"google it"之前,请仔细阅读问题.这是旧/经典问题,但旧/经典解决方案不再有效.这是在Visual Studio 2013/2015中重现的非常简单的场景:

1)使用MVC模板创建ASP.NET Web应用程序: 在此输入图像描述 在此输入图像描述

2)打开Controllers\HomeController.cs并向控制器和"睡眠"动作添加属性:

[SessionState( System.Web.SessionState.SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
    public ActionResult Sleep(int? time)
    {
        System.Threading.Thread.Sleep(time ?? 3000);
        return Content("OK");
    }

    public ActionResult Index()
    {
...
Run Code Online (Sandbox Code Playgroud)

3)打开文件:Views\Home\Index.cshtml并使用以下内容添加/替换内容html:

<script>
    function ReqClick() {
        var startTime = Date();

        $.ajax("/Home/Sleep")
        .success(function () {
            var log = $("#log");
            var endTime = Date();
            log.text(log.text() + "Start: " + startTime.toString() + "  === " + endTime.toString());
        });
    };
</script>

<button type="button" onclick="ReqClick();">
    Request
</button>
<div>
    <textarea id="log" style="width:640px; height:480px"></textarea>
</div>
Run Code Online (Sandbox Code Playgroud)

4)运行它(如果您使用的是IIS或IIS Express或Vs …

asp.net-mvc concurrency multithreading session-state asp.net-mvc-5

9
推荐指数
2
解决办法
6575
查看次数