Я использовал .Net Upgrade Assistant для обновления проекта нашего сайта с версии 4.8 до версии 7. Он создал параллельное приложение, и я пытаюсь выполнить шаги из найденной мной серии YouTube «Миграция ASP.NET». Проект .net 7 запускается и возвращает «hello world» от нового тестового контроллера, но возвращает 502 при попытке проксировать старое приложение. Старое приложение 4.8 необычно тем, что у нас есть локальные URL-адреса IIS (т. е. local.foo.com вместо localhost:7000), настроенные на наших локальных компьютерах с использованием сертификата разработки IIS Express. Мне удалось заставить прокси-сервер миграции работать с одним из других наших приложений, использующих IIS Express, но мне трудно понять, какая конфигурация может отсутствовать в старом или новом приложениях, чтобы прокси-сервер работал.
Это из консоли отладки:
info: Microsoft.Hosting.Lifetime[14]
Now listening on: https://localhost:7055
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5055
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\PUE.Development\lms\Web.SiteCore
info: Yarp.ReverseProxy.Forwarder.HttpForwarder[9]
Proxying to https://local.foo.com/ HTTP/2 RequestVersionOrLower no-streaming
info: Yarp.ReverseProxy.Forwarder.HttpForwarder[48]
Request: An error was encountered before receiving a response.
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch
at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp2ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter`1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at Yarp.ReverseProxy.Forwarder.HttpForwarder.SendAsync(HttpContext context, String destinationPrefix, HttpMessageInvoker httpClient, ForwarderRequestConfig requestConfig, HttpTransformer transformer, CancellationToken cancellationToken)
Вот код, сгенерированный помощником по обновлению для файла Program.cs нового приложения:
Я использовал .Net Upgrade Assistant для обновления проекта нашего сайта с версии 4.8 до версии 7. Он создал параллельное приложение, и я пытаюсь выполнить шаги из найденной мной серии YouTube «Миграция ASP.NET». Проект .net 7 запускается и возвращает «hello world» от нового тестового контроллера, но возвращает 502 при попытке проксировать старое приложение. Старое приложение 4.8 необычно тем, что у нас есть локальные URL-адреса IIS (т. е. local.foo.com вместо localhost:7000), настроенные на наших локальных компьютерах с использованием сертификата разработки IIS Express. Мне удалось заставить прокси-сервер миграции работать с одним из других наших приложений, использующих IIS Express, но мне трудно понять, какая конфигурация может отсутствовать в старом или новом приложениях, чтобы прокси-сервер работал. Это из консоли отладки: [code]info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:7055 info: Microsoft.Hosting.Lifetime[14] Now listening on: http://localhost:5055 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: C:\PUE.Development\lms\Web.SiteCore info: Yarp.ReverseProxy.Forwarder.HttpForwarder[9] Proxying to https://local.foo.com/ HTTP/2 RequestVersionOrLower no-streaming info: Yarp.ReverseProxy.Forwarder.HttpForwarder[48] Request: An error was encountered before receiving a response. System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions) at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](Boolean receiveFirst, Byte[] reAuthenticationData, CancellationToken cancellationToken) at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.AddHttp2ConnectionAsync(QueueItem queueItem) at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter`1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken) at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at Yarp.ReverseProxy.Forwarder.HttpForwarder.SendAsync(HttpContext context, String destinationPrefix, HttpMessageInvoker httpClient, ForwarderRequestConfig requestConfig, HttpTransformer transformer, CancellationToken cancellationToken) [/code] Вот код, сгенерированный помощником по обновлению для файла Program.cs нового приложения: [code] var builder = WebApplication.CreateBuilder(args); builder.Services.AddSystemWebAdapters(); builder.Services.AddHttpForwarder();
// Add services to the container. builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment()) { app.UseHsts(); }
Что пошло не так:
Произошла проблема при настройке проекта «:connectivity».
Не удалось создать экземпляр типа com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
Пространство имен не указано. Укажите пространство имен в файле сборки...
Что пошло не так:
Произошла проблема при настройке проекта «:connectivity».
Не удалось создать экземпляр типа com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
Пространство имен не указано. Укажите пространство имен в файле сборки...