Как использовать отдельные основные веб-API asp.net в основной странице Razor asp.net в том же решении - PullRequest
0 голосов
/ 05 мая 2019

Я использую Asp.net Core Razor Page в качестве моего webApp и asp.net Core api project в качестве моего API-сервиса Отдельно ... теперь, как я могу использовать apis в WebApp ... Спасибо

1 Ответ

0 голосов
/ 07 мая 2019

Если два проекта имеют разные оригиналы, вам нужно включить перекрестные запросы (CORS) в ASP.NET Core .

Тогда вы можете использовать ajax или получить API для вызова веб-API в Razor Pages.

Например, предположим, что Razor Pages имеет оригинальный https://localhost:44304 и Web Api https://localhost:44362

1. В проекте запуска Web Api.cs

ConfigureService:

services.AddCors(options =>
        {
            options.AddPolicy("MyPolicy",
            builder =>
            {
                builder.WithOrigins("https://localhost:44304")
                .AllowAnyHeader()
                .AllowAnyMethod();
            });
        });

Настройка:

app.UseCors("MyPolicy");
app.UseHttpsRedirection();

2.Razor Pages Index.cshtml:

<div>
<input type="button" value="Test"
        onclick="requestVal('https://localhost:44362/api/values')" />
<span id='result'></span>
</div>

<script>
function requestVal(uri) {
    const resultSpan = document.getElementById('result');

    fetch(uri)
        .then(response => response.json())
        .then(data => resultSpan.innerText = data)
        .catch(error => resultSpan.innerText = 'See F12 Console for error');
}
</script>

3.Нажмите кнопку и отобразите результат

...