我尝试访问端点来获取令牌,.net 6 中内置的编排 API 大约需要 15 秒才能返回令牌。为了测试这不是网络问题,我创建了两个 Lambda 函数,一个使用 python,另一个使用 .net 6 C#(与 API 的代码相同)。 python 运行时间不到 1 秒,但 .net 运行时间为 15 秒,下面是代码,我不希望在 Orchestration API 和因此而要调用的任何 API 之间有一个 Lambda python 层问题。抱歉,它很脏,并且不遵循许多标准,因为我一直在尝试一些东西。
var handler = new HttpClientHandler();
handler.Proxy = null;
handler.UseProxy = false;
handler.ClientCertificateOptions = ClientCertificateOption.Manual;
handler.ServerCertificateCustomValidationCallback =
(httpRequestMessage, cert, cetChain, policyErrors) =>
{
return true;
};
using (var client = new HttpClient(handler))
{
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.ConnectionClose = true;
client.BaseAddress = new Uri("https://xxxxxxxxxx/");
var data = new List<KeyValuePair<string, string>>();
var bodyArray = "grant_type:xxxxx|scope:xxxxx".Split("|");
for (int i = 0; i < bodyArray.Length; i += 1)
{
var bodyKeyValue = bodyArray[i].Split(":");
for (int x = 0; x < bodyKeyValue.Length - 1; x += 1)
{
var key = bodyKeyValue[0].ToString();
var value = bodyKeyValue[1].ToString();
data.Add(new KeyValuePair<string, string>(key, value));
}
}
var content = new FormUrlEncodedContent(data);
var authenticationString = "1c69ec9f138d42bd2735e6c275ec1b77:d172e5f8f2b8c731a6fbfda5e2ad2f09";
var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(authenticationString));
var requestMessage = new HttpRequestMessage(HttpMethod.Post, @"xxxxxx/token");
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Basic", base64EncodedAuthenticationString);
requestMessage.Content = content;
var task = client.SendAsync(requestMessage);
var response = task.Result.Content.ReadAsStringAsync().Result;
Token result = JsonConvert.DeserializeObject<Token>(response.ToString());
return result;
谢谢
我在本地尝试过,在本地 Docker 上运行得很好,没有速度问题,从生成的 Postman 复制了 RestClient 代码。
你对此有答案吗?我认为我在相同的情况下运行 eks 集群下的网络核心 api。