【发布时间】:2022-10-19 18:07:10
【问题描述】:
我正在尝试向 Web API 提交请求。我正在使用 C# 使用 Azure App Services 编写 Web API。此代码执行请求:
_objClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("basic", credential);
var multipartFormContent = new MultipartFormDataContent();
multipartFormContent.Add(new StringContent(product.Name), name: "name");
multipartFormContent.Add(new StringContent(product.Price), name: "price");
MemoryStream ms = new(product.catalogue);
var fileStreamContent = new StreamContent(ms);
fileStreamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
multipartFormContent.Add(fileStreamContent, name: "content", fileName: product.Name);
var response = _objClient.PostAsync(_settings.UploadProductCatalogueUrl, multipartFormContent).GetAwaiter().GetResult();
调用 PostAsync 方法会返回此错误:
异常消息:无法建立 SSL 连接,请参阅内部异常。
内部异常:由于证书链中的错误,远程证书无效:UntrustedRoot。
堆栈跟踪:在 System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions,HttpRequestMessage 请求,布尔异步,流流,CancellationToken cancelToken)\r\n 在 System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage 请求,布尔异步,CancellationToken cancelToken) \r\n 在 System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage 请求,布尔异步,CancellationToken cancelToken)\r\n 在 System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage 请求)\r\n 在 System.Threading .Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)\r\n 在 System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage 请求,布尔异步,CancellationToken cancelToken)\r\n 在 System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync (HttpRequestMessage 请求,布尔异步,布尔doRequestAuth, CancellationToken cancelToken)\r\n 在 System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage 请求, 布尔异步, CancellationToken cancelToken)\r\n 在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage 请求, 布尔异步, CancellationToken cancelToken)\r\n 在 Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken)\r\n 在 Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken)\ r\n 在 System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage 请求,HttpCompletionOption completionOption,CancellationTokenSource cts,布尔 disposeCts,CancellationTokenSource pendingRequestsCts,CancellationToken originalCancellationToken)\r\n 在 ProductCatalogue.UploadProductCatalogue(CatalogueDto 目录)
它在本地运行时确实有效,只有在部署到 Azure 时才会失败。
【问题讨论】: