在进行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仍然得到相同的错误
答案 0 :(得分:1)
设置Http.Preauthenticate = true
只是告诉网络请求将Authorization
标头发送到该Uri,假设它是.NET's HttpWebRequest.Preauthenticate
的传递。在这种情况下,您似乎实际上不会向Web请求提供任何凭据。您引用凭据的唯一情况是记录器消息。
Http.Get<T>
方法应该允许您提供原始标头值(在这种情况下,您需要添加自己的Authorization
标头)或凭据,以便创建标头您。 (这似乎是一个包含C#WebRequest
或类似连接库的库,因此您需要查看其文档以获取具体细节。