ASP. Net Core ReturnURL при использовании CDN? - PullRequest
0 голосов
/ 20 марта 2020

Настройка

Веб-сайт ASP. Net Core MVC обновлен с Core 2.2 до ASP. Net Core 3.1. Это было только что перемещено позади CDN. Все, что касается Azure, в частности.

URL-адрес publi c, указывающий (через CNAME) на CDN, равен www.sitename.com. URL-адрес внутреннего сервера, на который указывает CDN, - coreaz.sitename.com.

Все https, и, кажется, работает довольно хорошо. CDN и базовый сайт имеют соответствующие сертификаты.

Проблема

ReturnUrl в различных местах состоит из:

Context.Request.GetEncodedUrl()

, который возвращает https://coreaz.sitename.com/currentpage?params=abc Это было идеально до того, как положить CDN в середине всего. Теперь, как только кто-то переходит на страницу через URL-адрес возврата, он пропускает CDN до конца своего визита.

Вопрос

Как правильно теперь генерировать https://www.sitename.com/currentpage?params=abc в страницах указать на CDN?

Код с открытым исходным кодом, и я хотел бы сохранить его гибким, чтобы кто-то другой мог его легко разместить.

Похоже, мне нужно настроить приложение с PreferredHostName установлен на www.sitename.com.

Но тогда состав URL кажется грязным. Я подозреваю, что упускаю что-то легкое.

1 Ответ

0 голосов
/ 31 марта 2020

В итоге я использовал этот метод для перекомпоновки URI в классе SettingsService.

    public string GetPreferredUri(HttpRequest request)
    {
        var preferredhost = _config["PreferredHost"];
        if (!String.IsNullOrWhiteSpace(preferredhost))
        {
            request.Host = new HostString(preferredhost);
        }

        var absoluteUri = string.Concat(
                    request.Scheme,
                    "://",
                    request.Host.ToUriComponent(),
                    request.PathBase.ToUriComponent(),
                    request.Path.ToUriComponent(),
                    request.QueryString.ToUriComponent());

        return absoluteUri;
    }

И я вызываю это со страницы .cs html:

[...]
@inject SettingsService settingsService

[...]

<a class="nav-link pt-0" asp-area="" asp-controller="Account" asp-action="Login"
       asp-route-returnUrl="@settingsService.GetPreferredUri(Context.Request)">Log in</a>
...