Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
在asp.net mvc 4中使用c#计算控制器中的方法调用_C#_Asp.net Mvc - Fatal编程技术网

在asp.net mvc 4中使用c#计算控制器中的方法调用

在asp.net mvc 4中使用c#计算控制器中的方法调用,c#,asp.net-mvc,C#,Asp.net Mvc,我正在从事一个项目,如果能够计算方法被调用的次数(或返回的ActionResult),这将非常有帮助。但是,使用以下代码时,简单计数器不起作用: namespace Website.Controllers { public class HomeController : BaseController { int counter = 0; public ActionResult DoSomething() {

我正在从事一个项目,如果能够计算方法被调用的次数(或返回的
ActionResult
),这将非常有帮助。但是,使用以下代码时,简单计数器不起作用:

namespace Website.Controllers
{
    public class HomeController : BaseController
    {

        int counter = 0;

        public ActionResult DoSomething()
        {
            counter++;

            // Do more

            return View();
        }
    }
}

有办法数一数吗?我在谷歌上找不到关于这个主题的任何东西,或者在这里搜索,所以我认为我的措辞或者我尝试实现这个主题的方式是不正确的,也许有人可以详细说明上面的代码,并解释我做错了什么。

你正在实现的计数器在内存中工作。如果应用程序重新启动,计数器将重置

计数器
变量必须是静态的,因此它将一直工作,直到应用程序池没有重新启动。它也必须是线程保存

在递增计数器之前,必须锁定共享对象(它也可能是静态变量)

namespace Website.Controllers
{
    public class HomeController : BaseController
    {

        static int counter = 0;
        static object lockObj = new object();
        public ActionResult DoSomething()
        {
            lock(lockObj)
            {
                counter++;
            }
            // Do more

            return View();
        }
    }
}
编辑 如果要为每个用户设置计数器,可以使用
Session
state

if(Session["counterKey"] != null)
{
    int counter = (int)Session["counterKey"];
    counter++;
    Session["counterKey"] = counter;
}
else
{
    Session["counterKey"] = 1; // first call
}

您正在实现的计数器在内存中工作。如果应用程序重新启动,计数器将重置

计数器
变量必须是静态的,因此它将一直工作,直到应用程序池没有重新启动。它也必须是线程保存

在递增计数器之前,必须锁定共享对象(它也可能是静态变量)

namespace Website.Controllers
{
    public class HomeController : BaseController
    {

        static int counter = 0;
        static object lockObj = new object();
        public ActionResult DoSomething()
        {
            lock(lockObj)
            {
                counter++;
            }
            // Do more

            return View();
        }
    }
}
编辑 如果要为每个用户设置计数器,可以使用
Session
state

if(Session["counterKey"] != null)
{
    int counter = (int)Session["counterKey"];
    counter++;
    Session["counterKey"] = counter;
}
else
{
    Session["counterKey"] = 1; // first call
}

您正在实现的计数器在内存中工作。如果应用程序重新启动,计数器将重置

计数器
变量必须是静态的,因此它将一直工作,直到应用程序池没有重新启动。它也必须是线程保存

在递增计数器之前,必须锁定共享对象(它也可能是静态变量)

namespace Website.Controllers
{
    public class HomeController : BaseController
    {

        static int counter = 0;
        static object lockObj = new object();
        public ActionResult DoSomething()
        {
            lock(lockObj)
            {
                counter++;
            }
            // Do more

            return View();
        }
    }
}
编辑 如果要为每个用户设置计数器,可以使用
Session
state

if(Session["counterKey"] != null)
{
    int counter = (int)Session["counterKey"];
    counter++;
    Session["counterKey"] = counter;
}
else
{
    Session["counterKey"] = 1; // first call
}

您正在实现的计数器在内存中工作。如果应用程序重新启动,计数器将重置

计数器
变量必须是静态的,因此它将一直工作,直到应用程序池没有重新启动。它也必须是线程保存

在递增计数器之前,必须锁定共享对象(它也可能是静态变量)

namespace Website.Controllers
{
    public class HomeController : BaseController
    {

        static int counter = 0;
        static object lockObj = new object();
        public ActionResult DoSomething()
        {
            lock(lockObj)
            {
                counter++;
            }
            // Do more

            return View();
        }
    }
}
编辑 如果要为每个用户设置计数器,可以使用
Session
state

if(Session["counterKey"] != null)
{
    int counter = (int)Session["counterKey"];
    counter++;
    Session["counterKey"] = counter;
}
else
{
    Session["counterKey"] = 1; // first call
}

你真的只需要一个计数器,还是这是一个XY问题,你正试图重新发明应用程序监控?你为什么要计算它?你想解决什么问题?我想数一数,因为这是我能想到的比较某个变量调用次数的最简单方法,我可以用它在我的网站上显示/不显示按钮。“比较某个[动作方法]调用次数”-现在我们有了进展,但你对这个问题的解释还不够充分,没有找到合适的解决办法。该变量对所有用户都有效,还是根据用户调用该方法的次数显示/隐藏一个用户的按钮?计数器的寿命有多长,是否应在appdomain回收之间保留该值?它应该再次存储为每个用户还是每个应用程序?静态变量将对所有用户计数。不要使用这种解决方案,因为当你有多个访问者时,它会破坏你的网站(用两个浏览器测试)。重写您的问题,并包含实际的相关代码,以便人们能够提出适当的解决方案。您真的只需要一个计数器,还是这是一个XY问题,您正在尝试重新设计应用程序监控?为什么要计算它?你想解决什么问题?我想数一数,因为这是我能想到的比较某个变量调用次数的最简单方法,我可以用它在我的网站上显示/不显示按钮。“比较某个[动作方法]调用次数”-现在我们有了进展,但你对这个问题的解释还不够充分,没有找到合适的解决办法。该变量对所有用户都有效,还是根据用户调用该方法的次数显示/隐藏一个用户的按钮?计数器的寿命有多长,是否应在appdomain回收之间保留该值?它应该再次存储为每个用户还是每个应用程序?静态变量将对所有用户计数。不要使用这种解决方案,因为当你有多个访问者时,它会破坏你的网站(用两个浏览器测试)。重写您的问题,并包含实际的相关代码,以便人们能够提出适当的解决方案。您真的只需要一个计数器,还是这是一个XY问题,您正在尝试重新设计应用程序监控?为什么要计算它?你想解决什么问题?我想数一数,因为这是我能想到的比较某个变量调用次数的最简单方法,我可以用它在我的网站上显示/不显示按钮。“比较某个[动作方法]调用次数”-现在我们有了进展,但你对这个问题的解释还不够充分,没有找到合适的解决办法。该变量对所有用户都有效,还是根据用户调用该方法的次数显示/隐藏一个用户的按钮?计数器的寿命有多长,是否应在appdomain回收之间保留该值?它应该再次存储为每个用户还是每个应用程序?静态变量将对所有用户计数。不要使用这种解决方案,因为当你有多个访问者时,它会破坏你的网站(用两个浏览器测试)。重写您的问题,并包含实际的相关代码,以便人们能够提出适当的解决方案。您真的只需要一个计数器,还是这是一个XY问题,您正在尝试重新设计应用程序监控?为什么要计算它?你想解决什么问题?我在努力