Как добавить API в проект с Razor Pages на ASP.NET Core

Сайтостроение | создано: 2/27/2022 | опубликовано: 2/27/2022 | обновлено: 11/15/2022 | просмотров: 1159 | всего комментариев: 1

Речь пойдет про шаблон для Visual Studio 2022, который называется "ASP.NET Core Web App". Используем NET 6.0.

Шаблон

Если вы создаете новый проект на ASP.NET Core и выбираете шаблон "ASP.NET Core Web App", то добавить API-контроллеры придется добавлять "вручную".

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

Добавляем код API

Файл Program.cs, который сгенерировала Visual Studio, нужно обновить. Было так:


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

Должно стать так:


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints => {
    endpoints.MapRazorPages();
    endpoints.MapControllerRoute("default", "api/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllers();
});

app.Run();

Даже никаких сборок не придется ставить. Вот так просто!

Комментарии к статье (1)

Спасибо. 

Пригодилось. Добавил себе в копилку.