Получить текущий URL-адрес, как только доступны program.cs / startup.cs в ASP.NET Core - PullRequest
0 голосов
/ 06 февраля 2019

Цель: получить URL-адрес в браузере как можно скорее при запуске веб-приложения ASP.NET Core 2.2.

Я попробовал почти все виды хакерских атак внутри Startup.cs, что, несомненно, позволяет использовать DIдля регистрации IHttpContextAccessor для получения доступа к HttpContext

Некоторые люди скажут использовать

var url = HttpContext?.Request?.GetDisplayUrl();

Вы можете использовать это в контроллере, но если вы переходите к определению, вы видитечто HttpContext исходит из ControllerBase в Mvc и т. д.

  1. Я вижу, как построить промежуточное ПО - отлично, но я не знаю, как на самом деле это сделать
  2. Я видел статью о промежуточном ПО и вызываю метод Invoke, ноКак и где и т.д ..? Текущий URL в промежуточном программном обеспечении ASPCore?
  3. Похоже, я просто хочу то, что у меня было в global.asax в "classic" .net с URL и т. Д.

Я вижу, что Программа вызывает Startup.cs с .UseStartup<Startup>(); Можно ли получить доступ, чтобы иметь возможность ЗАКОНЧИТЬСЯ, чтобы получить URL-адрес типа http://localhost:4444

Все, что я хочу ...

var url = HttpContext?.Request?.GetDisplayUrl(); 

, чтобы показать мой URL, как только ядро ​​.net в библиотеке классов / startup / program.cs позволит мне увидеть URL вроде http://localhost:4444

1 Ответ

0 голосов
/ 06 февраля 2019

Для обработки запроса вы можете попробовать ASP.NET Core Middleware .

Простое промежуточное ПО, как показано ниже:

    public class Startup
    {
        //rest code

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            app.Use((context,next) =>
            {
                var url = context.Request.GetDisplayUrl();
                return next.Invoke();
            });

            //rest code
        }
    }

Для использования GetDisplayUrl(), добавьте

    using Microsoft.AspNetCore.Http.Extensions;
...