zoukankan      html  css  js  c++  java
  • 【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: 这真是一次把”简单问题“复杂化的后果。

    [完]

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

  • 相关阅读:
    利用NewID()生成随机数
    ie下取得iframe里面内容
    [转]linux下动态库安装问题
    【转】基于OpenCV的人脸识别设计方案
    [转]Vim中的记录功能
    [转]opencv中facedetect例子浅析
    [转]vc中 error LNK2001:unresolved external symbol _WinMain@16的解决方法
    转VS2010解决方案转换到VS2008
    JavaScript面向对象程序设计(8): 优雅的封装还是执行的效率?
    用DLL生成LIB文件
  • 原文地址:https://www.cnblogs.com/lulight/p/15314879.html
Copyright © 2011-2022 走看看