问题 当成功有效访问令牌时不返回结果并返回无效?

ahmedsalah.

成员
加入
2018年9月26日
消息
22
编程经验
3-5
我在ASP.NET核心中使用中间验证令牌2.2如果访问令牌无效返回消息无效,此案工作完美

问题来了,当有效的令牌成功问题是下一个请求,没有给我一个行动的结果,所以我为此做了什么

问题是当成功有效令牌可以到达它到达下一个,但在该结果的操作之后不显示

在这两种情况下,如果有效令牌或无效返回无效令牌消息

我尝试了什么

C#:
public async Task InvokeAsync(HttpContext context, DataContext dataContext)
        {
            var validKey = false;
            // than you logic to validate token          
            var CheckExistAccessToken = context.Request.Headers.ContainsKey("Authorization");
            var AccessTokenValue = context.Request.Headers["Authorization"].SingleOrDefault();
            //var token = AccessTokenValue.Substring(AccessTokenValue.IndexOf(' ') + 1);
            if (CheckExistAccessToken)
            {
                bool isvalid = _tockenvalidator.ValidateToken(AccessTokenValue);
                if (isvalid)
                {
                    validKey = true;
                }
                else
                {
                    validKey = false;
                }
                }
            if (!validKey)
            {
                context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
                await context.Response.WriteAsync("Invalid Token");
            }
            //if valid than next middleware Invoke
            else
            {
                await _next.Invoke(context);
// not return to me action i write on postman and return also message not valid token
            }
        }
    }
public static class TokenExtensions
    {
        public static IApplicationBuilder UseTokenAuth(this IApplicationBuilder builder)
        {
              return builder.UseMiddleware<TokenValidateMiddleware>();
        }
    }
关于启动程序配置

C#:
if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see Enforce HTTPS in ASP.NET Core.
                app.UseHsts();
            }
            app.UseTokenAuth();
            app.UseHttpsRedirection();
            app.UseStatusCodePagesWithReExecute("/error/{0}");
            app.UseMvc();
            app.UseCors("CorsData");
            app.UseStaticFiles();
            app.UseDefaultFiles();
 
最后编辑了主持人:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
没有与您的问题有关,但有助于使福彩12选5走势图更清晰:更改:
C#:
bool isvalid = _tockenvalidator.ValidateToken(AccessTokenValue);
if (isvalid)
{
    validKey = true;
}
else
{
    validKey = false;
}

C#:
validKey = _tockenvalidator.ValidateToken(AccessTokenValue);

现在就你的问题。如果你改变第28行,会发生什么:
C#:
await _next.Invoke(context);

C#:
await _next.Invoke(context).ConfigureAwait(false);
要小心这是 只是一个黑客 on the same scale as the VB6 of just throwing in a DoEvents(). You really should understand what is causing the deadlock and work to prevent the deadlock from happening in the first place.
(读书很好: 不要阻止异步福彩12选5走势图 )
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
我没有阅读那个更新的响应。我读过他对经典的WebAPI和MVC的较旧的响应,其中使用未与同步上下文相关联的MVC可能会影响ASP.NET使用的可用线程池。看到那个较新的响应,它看起来像较新的.NET核心 甚至不再具有同步上下文。因此,在ASP.NET核心中,这将是冗余的(或更多的NO-OP)。

无论如何,自从你使用的是。净核心,并且没有易于使用的方式来打破观点是一个僵局,然后当他获得悬垂的行为并试图检查每个线程的Callstack时,OP没有追溯到调试器,以查看他是否有一些一种诱导僵局的循环依赖性。
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
Yes, I've seen that one too. However, just because ConfigureAwait(false) has had the plug pulled by the ASP Core dev team, it is still recommended to use ConfigureAwait(false) in library projects fully supported by DotNet 4.6 independently etc but not in MVC/ASP since Microsoft have ditched context.
 
Last edited:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,892
地点
切萨皮克,va.
编程经验
10+
看起来艾哈迈德已经让绝望和垃圾邮件多个网站带来了同一问题:
堆栈溢出
ASP.NET.
CSharp Corner.
codeproject.
Dreamincode..

@ahmed.: From what I can see, TokenValidateMiddleware is custom code you've written. Can you share the code with us? Perhaps the source of the deadlock is present there?
 
最佳 底部