401(未经授权)拨打服务电话时

时间:2017-12-22 05:11:55

标签: c# asp.net-web-api

在进行web 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;
        }

我已经使用了preauthentication仍然得到相同的错误

1 个答案:

答案 0 :(得分:1)

设置Http.Preauthenticate = true只是告诉网络请求将Authorization标头发送到该Uri,假设它是.NET's HttpWebRequest.Preauthenticate的传递。在这种情况下,您似乎实际上不会向Web请求提供任何凭据。您引用凭据的唯一情况是记录器消息。

Http.Get<T>方法应该允许您提供原始标头值(在这种情况下,您需要添加自己的Authorization标头)或凭据,以便创建标头您。 (这似乎是一个包含C#WebRequest或类似连接库的库,因此您需要查看其文档以获取具体细节。