2017-12-22 3 views
0

받기 (401) 웹 API 컨트롤러 호출을하는 동안 (허가)(401)하면서 (무단) 서비스 호출

public bool CheckCarrierSCAC(int carrierID) 
     { 
      bool carrierScacSatus = false; 
      carrierSCAC = new BackOfficeViewController().GetSCACCodeBYCarrierID(carrierID); 
      logger.LogMessage(message: string.Format("Credentials {0}{1}", ConfigurationManager.AppSettings["HermesUserName"], ConfigurationManager.AppSettings["HermesPassword"]), logDate: true); 
      Http.Preauthenticate = true; 
      string serviceUrl = string.Format("{0}/CarrierSCAC?carrier={1}", ConfigurationManager.AppSettings["GatewayInterface"], carrierSCAC); 
      logger.LogMessage(message: string.Format("Check Carrier SCAC Service URL {0} ", serviceUrl), logDate: true); 
      try 
      { 
       carrierScacSatus = Http.Get<bool>(uri: serviceUrl, cookieContainer: null, contentType: "application/json"); 
      } 
      catch (Exception exception) 
      { 
       logger.LogException(exception, message: "error while check Carrier Scac =" + exception.Message); 
      } 
      return carrierScacSatus; 
     } 

이미 사전 인증 여전히 받고 같은 오류를 사용했다 Http.Preauthenticate = true 설정

+0

CORS에 대한 확인 –

답변

1

단지로 웹 요청을 알려줍니다 .NET's HttpWebRequest.Preauthenticate으로 통과한다고 가정하면 앞으로 Uri에 Authorization 헤더를 보냅니다. 이 경우 실제로 웹 요청에 대한 자격 증명을 제공하지 않는 것처럼 보입니다. 자격 증명을 참조하는 유일한 경우는 로거 메시지에 있습니다.

Http.Get<T> 메서드를 사용하면 머리글을 만들 때 원시 머리글 값 (이 경우 고유 한 Authorization 헤더를 추가해야 함)이나 자격 증명을 제공 할 수 있어야합니다. (이것은 C# WebRequest 또는 유사한 연결 라이브러리를 포함하는 라이브러리 인 것으로 보입니다. 자세한 내용은 문서를 확인해야합니다.)

+0

오 ... 네, 방금 그것을 놓쳤습니다. (알림을 주셔서 감사합니다 :) –

+0

@SandeepPandey가 문제를 해결 했나요, 아니면 여전히 401을 제공하고 있습니까? –

+0

고정 된 .. 감사합니다 –