C# 将HttpContext与Boolean i进行比较
在.NET core应用程序的中间件中,我使用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
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
谢谢,我接受了你的答案,并在不同的答案中提供了我的发现,考虑到你的反馈。