У меня есть проект Asp.Net core 2.2
Недавно я поменял версию с 2.2 на 3.0 Preview 8. После этого изменения я увидел следующее предупреждение:
using 'UseMvc' to configure MVC is not supported while using Endpoint Routing. To continue using 'UseMvc', please set 'MvcOptions.EnableEndpointRouting = false' inside 'ConfigureServices'.
Я понимаю, что можно поставить настройку EnableEndpointRouting в false и решить проблему, но хочу понять какой подходщий путь следует использовать и почему Endpoint Routing не требует функций UseMvc()
.
Свободный перевод вопроса Using 'UseMvc' to configure MVC is not supported while using Endpoint Routing от участника @Mehrdad Babaki.
Нашёл решение в официальной документации "Migrate from ASP.NET Core 2.2 to 3.0":
Есть три подхода:
В моём случае результат будет выглядеть так:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
//Old Way
services.AddMvc();
// New Ways
//services.AddRazorPages();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}");
});
}
}
Или 2. Использование AddControllers() и UseEndpoints()
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseRouting();
app.UseCors();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
Или
3. Запрет endpoint Routing. То как предлагалось в сообщении с exception'ом и как упомянуто в следующем разделе документации: use mvcwithout endpoint routing
services.AddMvc(options => options.EnableEndpointRouting = false);
//OR
services.AddControllers(options => options.EnableEndpointRouting = false);
Свободный перевод ответа https://stackoverflow.com/a/58267385/5752652 от участника @Sergii Zhuravskyi.
У меня есть структура, в которой есть поле Mod, высчитываемое при инициализации:
Следующий код @using (AjaxBeginForm("CheckChanging", new AjaxOptions { UpdateTargetId = "results" })) вызывает ошибку CS0103 Имя "Ajax" не существует в текущем контексте
Реализовать программы клиента и сервера, работающие по протоколу UDPКлиент каждые 10 секунд отправляет на сервер пакет данных
Предположим, у нас есть строка преобразования SVG: