• 【Azure 应用服务】记一次 App Service 部分请求一直返回 401 "No Authority" 的情况


    问题描述

    发现部署在App Service上的 WCF 应用对于所请求的接口出现部分返回 401 - No Authority 消息,10次中有一次这样的概率。比较疑惑的问题是,应用没有更新,所以怀疑是App Service服务本身的问题? 

    从本地的异常,错误消息,都没有明确的发现,也曾怀疑过网络导致的怪异问题,但是通过抓包并没有发现异常。以上判断都无法定位问题。 

    本地异常:

       at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
       at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
       at BC.TODO.Repository.Services.TODOHomeService.ITODOHomeService.AvailabilityCheckGetTasks(DateTime date, Guid guid)
       at BC.TODO.Repository.Services.TODOHomeService.TODOHomeServiceClient.AvailabilityCheckGetTasks(DateTime date, Guid guid) in C:workBC.TODO.Repository.ServicesService ReferencesTODOHomeServiceReference.cs:line 28076
       at BC.TODO.Repository.Services.AvailabilityCheck.TODOAvailabilityCheckRepository.GetTasks(DateTime date, Guid guid) in C:workBC.TODO.Repository.ServicesAvailabilityCheckTODOAvailabilityCheckRepository.cs:line 45
       at BC.TODO.Domain.AvailabilityCheck.TODOAvailabilityCheckDomain.GetTasks(DateTime date, Guid guid) in C:workBC.TODO.DomainAvailabilityCheckTODOAvailabilityCheckDomain.cs:line 72
       at BC.TODO.Controllers.Data.TODO.AvailabilityCheckController.TaskList(SerachTaskModel model) in C:workBC.TODO.Controllers.DataAvailabilityCheckAvailabilityCheckController.cs:line 89

    问题根源

    最后,调查App Service的请求401的分布情况,倒推发现App Servcie中发布了两个部署槽(Slot), 其中一个是 staging环境,而这个环境中的认证与Product是不一样的,所以用Product的请求所携带的Authorization来访问Staging,就会出现401 No Authority的问题。 

    进一步检查App Service 槽的部署情况,果然,发现两个槽之间的流量分布为90%, 10%。进一步的解释了从客户端调用WCF服务时候出现的10次之间一次出现401的问题。 通过修改部署槽之间的流量,问题完美解决。

    PS: 这真是一次把”简单问题“复杂化的后果。

    [完]

    当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

  • 相关阅读:
    1026: C语言程序设计教程(第三版)课后习题7.5
    1024: C语言程序设计教程(第三版)课后习题7.3
    1023: C语言程序设计教程(第三版)课后习题7.2
    1022: C语言程序设计教程(第三版)课后习题7.1
    1021: C语言程序设计教程(第三版)课后习题6.11
    1020: C语言程序设计教程(第三版)课后习题6.10
    1019: C语言程序设计教程(第三版)课后习题6.9
    1018: C语言程序设计教程(第三版)课后习题6.8
    1017: C语言程序设计教程(第三版)课后习题6.7
    mac电脑很卡,如何在命令行查看当前电脑中的运行状态
  • 原文地址:https://www.cnblogs.com/lulight/p/15314879.html
Copyright © 2020-2023  润新知