C# 将HttpContext与Boolean i进行比较

C# 将HttpContext与Boolean i进行比较,c#,.net-core,C#,.net Core,在.NET core应用程序的中间件中,我使用HttpContext保存cookie的值,如下所示: app.Run(async context => { // context.Response.Cookies.Append("se_id","5"); if(context.Request.Cookies["se_id"] == 5){ context.Items["isVerified"] = true; } await _next.Inv

在.NET core应用程序的中间件中,我使用
HttpContext
保存cookie的值,如下所示:

app.Run(async context =>
{
    //  context.Response.Cookies.Append("se_id","5"); 
    if(context.Request.Cookies["se_id"] == 5){
     context.Items["isVerified"] = true;
    }

    await _next.Invoke(context);  
});
然后在函数中,我尝试使用以下方法检查它:

bool v = HttpContext.Items["isVerified"]  == true;
if (v){
      Console.WriteLine("Verified request? {0}", HttpContext.Items["isVerified"]);
     }
else{
     Console.WriteLine("NOT Verified request? {0}", HttpContext.Items["isVerified"]);
}
它给了我编译错误:

运算符“==”不能应用于“object”类型的操作数,“bool”[netcoreapp1.1]获取执行操作的Microsoft.AspNetCore.Http.HttpContext。HttpContext控制器base.HttpContext

我可以通过在中间件中重新定义来解决它,我将其定义为:

context.Items["isVerified"] = "true";
然后通过以下方式在函数中进行检查:

bool v = HttpContext.Items["isVerified"].ToString()  == "true";
有没有办法避免将其用作
布尔值
,而不是强制将其转换为两边的
文本。

就这样使用它:

if ((bool)HttpContext.Items["isVerified"])
    Console.WriteLine("Verified request? {0}", HttpContext.Items["isVerified"]);
else
    Console.WriteLine("NOT Verified request? {0}", HttpContext.Items["isVerified"]);

但请记住,如果
HttpContext.Items[“isVerified”]
null

您是否尝试先将“isVerified”强制转换为布尔值,则这不会保护您免受null ref异常的影响?比如
((bool)HttpContext.Items[“isVerified”])==true
@th1rdey3刚刚尝试过,如果它
NULL
未转换为
bool
谢谢,我接受了你的答案,并在不同的答案中提供了我的发现,考虑到你的反馈。