У меня есть очень специфический набор потребностей для приложения ASP.NET Core 2.1, который я не могу решить.Цель приложения - продемонстрировать использование веб-прокси с такими инструментами автоматизации, как Selenium, в частности, для сайта, использующего проверку подлинности NTLM.
Поскольку это демонстрационный сайт, который будет использоваться в контексте другого выполняющегося кодаМне нужно иметь возможность запускать и останавливать это программно.Кажется, я не могу найти способ эффективно использовать Kestral и IIS / IIS Express для надлежащего запуска и остановки приложения.
Поскольку я хочу продемонстрировать использование веб-браузеров, настроенных с прокси-сервером, для просмотра и проверки подлинностипо этому сайту, и поскольку большинство браузеров обходят прокси при просмотре localhost
сайтов (и его двоюродных братьев 127.0.0.1
и ::1
), мне нужно иметь возможность использовать имя хоста, отличное от localhost, для просмотра сайта, и яДля этой цели я использую простой псевдоним в моем файле hosts.Тем не менее, это позволяет HTTP.sys сразу же пытаться зарегистрировать любой префикс URL, отличный от результатов localhost, совершенно не удивительно, зная, как работает HTTP.sys, с ошибкой Access denied
.
Я исследовал несколько другие ответы , все из которых кажутся устаревшими или просто не работают для меня.
Класс запуска выглядит следующим образом:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<IISOptions>(iis => { iis.AutomaticAuthentication = false; });
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
Если я вручную запускаю приложение в отладчике с использованием профиля «IIS Express», оно работает так, что мне предлагают ввести учетные данные.Конечно, если я использую профиль «проект», он не будет работать, потому что Kestrel не понимает аутентификацию Windows без HTTP.sys.Если я пытаюсь использовать какие-либо программные средства для запуска приложения (например, WebHost.CreateDefaultBuilder().Build().StartAsync
), оно не запрашивает аутентификацию, я думаю, по тем же причинам, по которым оно не работает в профиле "project" в отладчике..
Смысл в том, чтобы избежать к минимуму конфигурации для пользователей после клонирования демонстрационного репо.Хостинг веб-приложения в полном IIS не является началом.Аналогично, решения, которые требуют административного доступа (например, с использованием netsh http add urlacl
) или запуска в качестве администратора, также не являются начальными, поскольку многие пользователи не имеют административного доступа к своим компьютерам.
Это то, что я пытаюсь даже возможно?Как я могу сделать это вместе, чтобы это сработало?«То, что вы пытаетесь сделать, невозможно», - это совершенно правильный ответ, но если этот ответ дан, я бы хотел получить дополнительную информацию о том, почему это невозможно.