Я написал простой ASP.NET Core 2.2 Web API
.Метод POST
всегда возвращает 404
, но запросы GET выполняются успешно.
public class TestPayload
{
public string test1 { get; set; }
public string test2 { get; set; }
}
[Route("api/[controller]")]
[ApiController]
public class TestController: ControllerBase
{
// POST api/create
[HttpPost]
public async Task<ActionResult<string>> Create([FromBody] TestPayload value)
{
return Ok("");
}
}
Я получаю сообщение об ошибке 404 в моем внешнем интерфейсе Angular HttpClient.
let headers = new HttpHeaders().set('Content-Type', 'application/json');
return this.http.post<any>(`${config.apiUrl}/test/create`, { test1, test2}, { headers }).pipe(map(x => {
...
return x;
}));
Я получаю ту же ошибку в Почтальоне.
POST /api/Test/Create HTTP/1.1
Host: localhost:5001
Content-Type: application/json
cache-control: no-cache
Postman-Token: 4d304e86-013c-4be8-af07-f2262079000d
{ test1: "val1", test2: "val2" }------WebKitFormBoundary7MA4YWxkTrZu0gW--
Я включил наиболее допустимые политики CORS (для тестирования) в моем файле Startup.cs, но это не решает проблему.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowAll",
builder =>
{
builder
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors("AllowAll");
app.UseHttpsRedirection();
app.UseMvc();
}
Я вижуследующее сообщение в окне вывода в Visual Studio, которое заставляет меня поверить, что это ошибка CORS, но я не знаю, что я сделал неправильно.Мои контрольные точки внутри метода никогда не попадают, даже если символы загружены и они попадают в методы GET.
Microsoft.AspNetCore.Server.Kestrel:Information: Connection id "0HLKU1LFDTCPA", Request id "0HLKU1LFDTCPA:00000002": the application completed without reading the entire request body.
Это выполняется все на локальном хосте.Я установил пакет NuGet Microsoft.AspNetCore.Cors (2.2.0) в свой проект.