【发布时间】:2021-09-28 18:37:33
【问题描述】:
我有dotnet core 5 应用程序和Angular app 在local host 所有Http methods 运行良好,但在网络主机HttpGet, HttpPost Methods 正常运行和HttpPut, DELETE 抛出异常:
CORS 策略已阻止从源“---”访问“---”处的 XMLHttpRequest:请求的资源上不存在“Access-Control-Allow-Origin”标头。
该配置Cors 如下所示:
public static IServiceCollection AddAdminApiCors(this IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder =>
{
builder.AllowAnyOrigin();
builder.AllowAnyHeader();
builder.AllowAnyMethod();
});
});
return services;
}
在Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddAdminApiCors();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseCors("CorsPolicy");
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
[Authorize]
[EnableCors("CorsPolicy")]
public class CompanyController : ControllerBase
{
[HttpGet]
public async Task<ActionResult<IEnumerable<CompanyViewModel>>> Get([FromQuery] CompanyQuery companyQuery)
{
return Ok(await _mediator.Send(companyQuery));
}
[HttpPost]
public async Task<ActionResult<int>> Create([FromBody] CreateCompanyCommand command)
{
var productId = await _mediator.Send(command);
return Ok(productId);
}
[HttpPut]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesDefaultResponseType]
public async Task<IActionResult> Update([FromBody] UpdateCompanyCommand command)
{
await _mediator.Send(command);
return NoContent();
}
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesDefaultResponseType]
public async Task<IActionResult> Delete(int id)
{
await _mediator.Send(new DeleteCompanyCommand { Id = id });
return NoContent();
}
}
在许多帖子中告诉我更改 web.config 文件并删除 WebDAV IIS Module 我关注他们但我的问题没有解决
cors put error
【问题讨论】:
-
您能否尝试在每个操作上添加 [EnableCors] 而不是在控制器上添加它。
-
由于“Get”和“Post”方法工作正常,所以请检查
ProducesResponseType和ProducesDefaultResponseType注解是否会影响这两种方法(“put”和“delete”方法) .
标签: .net asp.net-core iis asp.net-web-api