.net ядро ​​маршрутизации в области страниц бритвы на основе текущего имени домена? - PullRequest
0 голосов
/ 28 сентября 2018

В настоящее время я пытаюсь разработать приложение для размещения нескольких веб-сайтов из одного основного приложения .net.

В идеале я хотел бы показать совершенно разные страницы Razor в зависимости от имени домена, в котором находится приложение.доступ с.

В идеале я хотел бы, чтобы мои бритвенные страницы были разбиты на области, где каждая область связана с отдельным доменным именем.IE www.domain1.com является областью domain1, www.domain2.com является областью domain2, и каждая область имеет свой собственный индекс о странице и т. Д.

Так что, если кто-то получает доступ к приложению с www.domain1.com/ aboutus, он будет направлять их на бритвенные страницы, расположенные в разделе Area / Domain1 / Pages / AboutUs моего приложения.

Аналогично, если бы мое приложение получало запрос на www.domain2.com/aboutus,они увидят страницу о нас, расположенную в области / Домене 2 / Страницы / О нас.

Я искал несколько часов, и я не могу понять, как этого добиться, используя функцию области бритвенных страниц.Единственная информация, которую я могу найти, - как это сделать, используя области с Vanilla MVC.

Это был довольно хороший пример.

Другой домен в одном приложении ASP.NET Core 2.0

Я не могу понять, каксделать то же самое, используя бритвенные страницы.

1 Ответ

0 голосов
/ 30 сентября 2018

Я не уверен, насколько масштабируемым является использование областей для этого, но вы можете использовать промежуточное ПО для идентификации домена и подачи контента из области, основанной на этом, что-то вроде этого, где «bloggs» - это имя области дляbloggs.com домен:

public class AreaRoutingMiddleware
{
    private readonly RequestDelegate _next;

    public AreaRoutingMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        if(context.Request.Host.ToString() == "bloggs.com")
        {
            context.Request.Path = "/bloggs" + context.Request.Path;
        }
        await _next.Invoke(context);
    }
}

Вам также может понадобиться добавить проверки для типов файлов, если только все файлы (css, js, favicon и т. д.) также не находятся в соответствующей области.

...