接口如下: public async Task<Response> ConnectionValidation1(Request request, IFormCollection files)
调用如下:byte[] responseBytes = webClient.UploadData(接口地址, "POST", bytes);
一个文件上传接口,用多线程调用,偶尔出现返回登录页面的html。
登录验证cookie如下            services.AddAuthentication(b =>
            {
                b.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                b.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                b.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            }).AddCookie(b =>
            {
                //取消认证票据Cookie的SameSite属性
                b.Cookie.SameSite = SameSiteMode.None;
                //登陆地址
                b.LoginPath = "/Account/Login";
                //sid
                b.Cookie.Name = "My_SessionId";
                // b.Cookie.Domain = "shenniu.core.com";
                b.Cookie.Path = "/";
                b.Cookie.HttpOnly = true;
                b.Cookie.Expiration = new TimeSpan(0, 60, 30);
                b.ExpireTimeSpan = new TimeSpan(0, 60, 30);
            });接口控制器没有添加[Authorize]属性,继承的是Controller。怎么会出现多线程调用接口偶尔返回登录页面?

解决方案 »

  1.   

    既然没有加Authorize特性 就不存在登陆验证的问题, 你说多线程调用 返回登陆页面,试过单线程调用? 就不返回登陆页面么? 应该还是你程序的问题
      

  2.   

    添加[AllowAnonymous]特性
    你说的偶尔,可能是已经登陆,但浏览器没有关闭过,下次运行,当前上下文是 已登陆 状态
    或者是登陆时记住我了
      

  3.   


    如图,我在出现返回登录页记录了URL日志。记录的requestUrl(请求地址)都是接口地址,并没有出现其他URL情况,足矣说明程序是没问题的,就是不知为何接口会返回登录页。:
      

  4.   


    个人感觉是接口问题,部署在docker上的
      

  5.   


    调用接口和浏览器没关联吧浏览器,这个我只是猜想
    添加[AllowAnonymous]特性还不行,估计是某种情况下,代码直接跳转到了登陆页面
      

  6.   


    调用接口和浏览器没关联吧浏览器,这个我只是猜想
    添加[AllowAnonymous]特性还不行,估计是某种情况下,代码直接跳转到了登陆页面请求禁止重定向后返回空