Error 415 when posting to ASP.Net Core WebAPI using XMLHttpRequest Error 415 when posting to ASP.Net Core WebAPI using XMLHttpRequest typescript typescript

Error 415 when posting to ASP.Net Core WebAPI using XMLHttpRequest


In my case the problem was that I put a FromBody attribute before my action parameter.

From:

[HttpPost("Contact")]public async Task<IActionResult> NewContact([FromBody]Contact contact)

To:

[HttpPost("Contact")]public async Task<IActionResult> NewContact(Contact contact)


As Evan mentioned in his comment, your POST is turning into an OPTIONS when you make a cross-origin ajax request. Due to browsers' cross-origin security policies, your web api needs to tell the browser/js that your website is allowed to make ajax requests against it.

https://docs.microsoft.com/en-us/aspnet/core/security/cors

To setup CORS for your application add the Microsoft.AspNetCore.Cors package to your project.

Add the CORS services in Startup.cs:

public void ConfigureServices(IServiceCollection services){    services.AddCors();}

If you follow the linked instructions, you can even use IApplicationBuilder.UseCors to further customize which sites are allowed.

For example:

app.UseCors(builder =>    builder.WithOrigins("http://example.com")           .AllowAnyHeader());

Postman is an app and therefore has the ability to exempt itself from cross-origin rules.


Don't know why yet, I'm still pretty new to .Net Core Web API's. I removed the controller attribute [ApiController] and everything fell into place.

In my situation, I have a MVC interface & WebApi on the same project.Hope this helps someone.