相关疑难解决方法(0)

ASP.NET中的请求或服务器的静态类实例是唯一的吗?

在ASP.NET网站上,是每个Web请求唯一的静态类,还是在需要时实例化它们并在GC决定处理它们时进行GC操作?

我问的原因是因为我之前在C#中编写了一些静态类,并且行为与我预期的不同.我希望静态类对每个请求都是唯一的,但似乎并非如此.

如果它们并非每个请求都是唯一的,那么有没有办法让它们成为现实?

更新:
答案给了我正是我所需要的.我已经在使用单例类,但是它使用的是一个静态实例,因此即使用户不同也在请求之间共享,在这种情况下这是一件坏事.使用HttpContext.Current.Items完美地解决了我的问题.对于任何在将来偶然发现这个问题的人来说,这是我的实现,简化和缩短,以便易于理解模式:

using System.Collections;
using System.Web;

public class GloballyAccessibleClass
{
    private GloballyAccessibleClass() { }

    public static GloballyAccessibleClass Instance
    {
        get
        {
            IDictionary items = HttpContext.Current.Items;
            if(!items.Contains("TheInstance"))
            {
                items["TheInstance"] = new GloballyAccessibleClass();
            }
            return items["TheInstance"] as GloballyAccessibleClass;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net static

179
推荐指数
3
解决办法
7万
查看次数

Singleton类或ASP.NET MVC应用程序中具有静态方法的类

可能重复:
ASP .NET Singleton

我知道单例类和具有静态属性/方法的类之间的一般差异,但我想知道它如何影响ASP.NET MVC Web应用程序中的并发性(许多用户登录应用程序)?例如,我们将设置存储在我们的单例(或静态属性)类中.两个用户是否有可能突然开始看到/共享相同的设置?我的意思是,如果一个用户更改了他的设置(因为它们存储在应用程序运行时的内存中),它会影响其他用户吗?据我所知,IIS为应用程序创建了一个w3wp.exe进程,因此所有用户/访问者都将在同一进程中,因此这会对任何内容产生影响吗?

.net iis asp.net-mvc singleton static

5
推荐指数
2
解决办法
5335
查看次数

标签 统计

static ×2

.net ×1

asp.net ×1

asp.net-mvc ×1

c# ×1

iis ×1

singleton ×1