У меня есть устаревшее приложение ASP.NET MVC, которое я хотел бы постепенно перенести в приложение ASP.NET Core 8 с помощью YARP.
Представьте, что мое устаревшее приложение размещено под url foo.com, а мое прокси-приложение размещено по URL bar.com. Когда я перехожу на главную страницу bar.com, срабатывает логика аутентификации, и меня перенаправляют на bar.com/account/login, где отображается содержимое из foo. .com/account/login. Это отлично работает для меня. Вот мой код:
var httpClient = new HttpMessageInvoker(new SocketsHttpHandler
{
UseProxy = false,
AllowAutoRedirect = false,
AutomaticDecompression = DecompressionMethods.None,
UseCookies = true,
EnableMultipleHttp2Connections = true,
ActivityHeadersPropagator = new ReverseProxyPropagator(DistributedContextPropagator.Current),
ConnectTimeout = TimeSpan.FromSeconds(60),
});
var transformer = HttpTransformer.Empty;
var requestOptions = new ForwarderRequestConfig();
app.MapForwarder("/{**catch-all}", app.Configuration["ProxyTo"], requestOptions, transformer, httpClient);
Теперь я хотел бы переключиться с MapForwarder на MapReverseProxy. Я соответственно изменил свой код
builder.Services.AddHttpForwarder();
builder.Services.AddReverseProxy()
.ConfigureHttpClient((context, handler) =>
{
handler.AllowAutoRedirect = false;
handler.UseProxy = false;
handler.EnableMultipleHttp2Connections = true;
handler.UseCookies = true;
handler.ConnectTimeout = TimeSpan.FromSeconds(60);
})
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
builder.Services.AddSystemWebAdapters()
.AddRemoteAppClient(options =>
{
options.RemoteAppUrl = new Uri(builder.Configuration
["ReverseProxy:Clusters:fallbackCluster:Destinations:fallbackApp:Address"]!);
options.ApiKey = builder.Configuration["RemoteAppApiKey"]!;
})
.AddAuthenticationClient(true);
...
app.MapReverseProxy();
Теперь поведение изменилось. Если handler.AllowAutoRedirect имеет значение false, то bar.com перенаправляется на foo.com/account/login – я не хочу менять домены.
Если handler.AllowAutoRedirect имеет значение true, то bar.com отображает содержимое foo.com/account/login – домен не меняется, но путь /аккаунт/логин не сохраняется.
Что я делаю не так?
моя конфигурация такая вот так просто:
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "fallbackCluster",
"Match": {
"Path": "{**catch-all}"
}
}
},
"Clusters": {
"fallbackCluster": {
"Destinations": {
"fallbackApp": {
"Address": "https://localhost:44311/"
}
}
}
}
},
Подробнее здесь: https://stackoverflow.com/questions/787 ... proxy-yarp
Воспроизведение логики MapForwarder с помощью MapReverseProxy – YARP ⇐ C#
Место общения программистов C#
1721827352
Anonymous
У меня есть устаревшее приложение ASP.NET MVC, которое я хотел бы постепенно перенести в приложение ASP.NET Core 8 с помощью YARP.
Представьте, что мое устаревшее приложение размещено под url [b]foo.com[/b], а мое прокси-приложение размещено по URL [b]bar.com[/b]. Когда я перехожу на главную страницу [b]bar.com[/b], срабатывает логика аутентификации, и меня перенаправляют на [b]bar.com/account/login[/b], где отображается содержимое из [b]foo. .com/account/login[/b]. Это отлично работает для меня. Вот мой код:
var httpClient = new HttpMessageInvoker(new SocketsHttpHandler
{
UseProxy = false,
AllowAutoRedirect = false,
AutomaticDecompression = DecompressionMethods.None,
UseCookies = true,
EnableMultipleHttp2Connections = true,
ActivityHeadersPropagator = new ReverseProxyPropagator(DistributedContextPropagator.Current),
ConnectTimeout = TimeSpan.FromSeconds(60),
});
var transformer = HttpTransformer.Empty;
var requestOptions = new ForwarderRequestConfig();
app.MapForwarder("/{**catch-all}", app.Configuration["ProxyTo"], requestOptions, transformer, httpClient);
Теперь я хотел бы переключиться с MapForwarder на MapReverseProxy. Я соответственно изменил свой код
builder.Services.AddHttpForwarder();
builder.Services.AddReverseProxy()
.ConfigureHttpClient((context, handler) =>
{
handler.AllowAutoRedirect = false;
handler.UseProxy = false;
handler.EnableMultipleHttp2Connections = true;
handler.UseCookies = true;
handler.ConnectTimeout = TimeSpan.FromSeconds(60);
})
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
builder.Services.AddSystemWebAdapters()
.AddRemoteAppClient(options =>
{
options.RemoteAppUrl = new Uri(builder.Configuration
["ReverseProxy:Clusters:fallbackCluster:Destinations:fallbackApp:Address"]!);
options.ApiKey = builder.Configuration["RemoteAppApiKey"]!;
})
.AddAuthenticationClient(true);
...
app.MapReverseProxy();
Теперь поведение изменилось. Если handler.AllowAutoRedirect имеет значение false, то [b]bar.com[/b] перенаправляется на [b]foo.com/account/login[/b] – я не хочу менять домены.
Если handler.AllowAutoRedirect имеет значение true, то [b]bar.com[/b] отображает содержимое [b]foo.com/account/login[/b] – домен не меняется, но путь /аккаунт/логин не сохраняется.
Что я делаю не так?
моя конфигурация такая вот так просто:
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "fallbackCluster",
"Match": {
"Path": "{**catch-all}"
}
}
},
"Clusters": {
"fallbackCluster": {
"Destinations": {
"fallbackApp": {
"Address": "https://localhost:44311/"
}
}
}
}
},
Подробнее здесь: [url]https://stackoverflow.com/questions/78788634/reproduce-mapforwarder-logic-with-mapreverseproxy-yarp[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия