调用 put 时出错,dot net core 中的 delete 方法

getting error when call put, delete methods in dot net core

当调用 put、delete 方法时我得到这个错误 No 'Access-Control-Allow-Origin' 但是 get、post 方法没有错误 在服务器上发布时会发生这种情况,但在我的计算机上我没有任何错误 这是启动文件中的代码

 public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            // 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.UseAuthentication();
        app.UseHttpsRedirection();
        app.UseCors("corsPolicy");

        app.UseStaticFiles();
        app.UseMvc();
    }

services.AddCors(options =>
        {
            options.AddPolicy("corsPolicy", builder =>
            {
                builder.AllowAnyMethod().AllowAnyOrigin().AllowAnyHeader().AllowCredentials();
            });
        });

控制器代码

namespace ContinuationProjLast.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    [EnableCors("corsPolicy")]

public class marksController : ControllerBase
{
    private readonly ProductionRefContext _context;

    public marksController(ProductionRefContext context)
    {
        _context = context;
    }
[HttpPut("{id}")]

    public async Task<IActionResult> Putmark(int id, mark mark)
    {
        if (id != mark.ID)
        {
            return BadRequest();
        }

        var mm = _context.mark.Where(x => x.devicemark == mark.devicemark && x.devicecategory == mark.devicecategory).FirstOrDefault();
        if (mm == null)
        {

            _context.Entry(mark).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!markExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
            return NoContent();
        }
        else
        {
            return BadRequest();

        }

    }

删除方法也会发生同样的事情。

我能得到什么帮助吗?

Iis 服务器天生不支持 put http 动词, 需要进行额外的设置。 我将它们更改为 post 动词并且在生产中运行良好

我从 iis 中删除了 WebDAV 发布,转到 控制面板 > 程序和功能 > 打开或关闭 windows 功能 >IIS > 万维网服务 > 通用 HTTP 功能 > WebDAV 发布
问题已解决