C# 401后续REST API请求出现未经授权的错误

C# 401后续REST API请求出现未经授权的错误,c#,asp.net-web-api2,C#,Asp.net Web Api2,在第一次成功响应200 Ok后,我在后续REST API请求上收到401 Unauthorized错误。请参阅下面的复制步骤 复制步骤: 验证并获取授权令牌-成功 提交第一个API请求-成功 提交后续API请求-401未经授权 注意:当我在本地调试或在Azure上部署时,这种方法可以很好地工作。但是,我在我的一个托管环境中获得了401个未经授权的许可。支持人员付出了艰苦的时间,无法解决此问题 注意:您可能会在我的屏幕截图中看到不同的承载令牌,但我在所有请求中传递相同的令牌 为什么它只

在第一次成功响应200 Ok后,我在后续REST API请求上收到401 Unauthorized错误。请参阅下面的复制步骤

复制步骤:

  • 验证并获取授权令牌-成功

  • 提交第一个API请求-成功

  • 提交后续API请求-401未经授权
  • 注意:当我在本地调试或在Azure上部署时,这种方法可以很好地工作。但是,我在我的一个托管环境中获得了401个未经授权的许可。支持人员付出了艰苦的时间,无法解决此问题

    注意:您可能会在我的屏幕截图中看到不同的承载令牌,但我在所有请求中传递相同的令牌

    • 为什么它只在1个托管环境和后续请求上给出问题
    • 我是否需要对我的web.config文件进行任何特定更改,以便我的后续请求能够被相同的承载令牌识别
    更新-1: 下面是我的域名(401)和azure(200OK)并排给出的响应。我看到Azure在cookies中另外发送ARRAffinity和ArraffinitySametite。希望这些信息能有所帮助


    我的web.config文件中缺少web场所需的机器密钥,因为我的托管环境使用3个名称服务器,因为它从第二次请求开始就无法识别令牌

    来自MS文档:如果您在Web场中部署应用程序,则必须确保每个服务器上的配置文件共享用于机器密钥的validationKey和decryptionKey的相同值,这两个值分别用于哈希和解密。这是必需的,因为您无法保证哪个服务器将处理连续的请求


    可能发生的情况是,服务器进入睡眠状态(在IIS上经常看到这种情况,默认情况下为20分钟),如果在x时间内没有发生请求,它将进入睡眠状态,并且令牌丢失。尝试查看Azure配置显示异常发生需要多长时间?如果30秒它正在寻找一个代理,并将代理设置为null将修复:request.proxy=null;感谢卡马达斯和杰登的回复。一旦我得到了令牌,我会在几秒钟内向服务器提交其他请求,这样时间肯定不会过期,或者服务器不能这么快睡觉,然后只有第一个得到结果,其他人也会得到结果。我猜从第二次请求开始它就认不出令牌了。我将检查azure配置并尝试设置request.Proxy=null(顺便说一句,我应该在哪里设置它?)刚刚发现,我的web.config文件中缺少web场所需的计算机密钥,因为我的宿主环境使用3个名称服务器。来自MS Docs:如果在Web场中部署应用程序,则必须确保每个服务器上的配置文件共享validationKey和decryptionKey的相同值,这两个值分别用于哈希和解密。这是必需的,因为您无法保证哪个服务器将处理连续的请求