c# - 静态方法线程安全

标签 c# .net 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;
}

这个方法线程安全吗?显然,我没有在这里修改任何内容,但是 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;
}

最佳答案

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

关于c# - 静态方法线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22842892/

相关文章:

.net - 在 .NET 中将 RTF 转换为 HTML

asp.net-mvc - 为 MVC5 中的操作授权参数

c# - 一个 View 中的 MVC 多个模型

c# - Lambda 与 LINQ- "Expression is always false"

c# - 空合并运算符 IList、Array、Enumerable.foreach 中的 Empty

javascript - 将 jQuery 禁用输入值发送到 MVC Controller

c# - 使用 quartz .NET 调度 Windows 服务

c# - 如何在 NLog 中修改 ${stacktrace} 布局渲染器

c# - 如何在 .net 4.5 中针对 AzureAD 实现 SAML2 身份验证? (消费代币)

jquery - MVC/jQuery - 可以在 jQuery 中使用 Razor 变量,但不能分配给 jQuery 变量?