静态方法线程安全

Man*_*eld 1 .net c# asp.net-mvc static thread-safety

假设用户登录我的mvc应用程序时调用以下方法:

public static bool IsValidBrowser()
{
    var browser = HttpContext.Current.Request.Browser;

    if (browser.Browser == "IE") {
        if (browser.MajorVersion < 10) {
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这个方法线程安全吗?显然我在这里没有修改任何东西,但是HttpContext.Current这个方法中间的变化可能有可能吗?

以这种方式编写代码会使其线程安全吗?

public ActionResult Login () 
{
    bool validBrowser = IsValidBrowser(HttpContext.Current.Request.Browser);
}

public static bool IsValidBrowser(HttpBrowserCapabilities browser)
{
    if (browser.Browser == "IE") {
        if (browser.MajorVersion < 10) {
            return false;
        }
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

Doc*_*ick 7

HttpContext.Current本身是一个静态方法,它将从当前线程返回上下文,因此您无需担心.