C# 上载文件时cors和jquery出现问题

C# 上载文件时cors和jquery出现问题,c#,jquery,ajax,asp.net-core,C#,Jquery,Ajax,Asp.net Core,我正在尝试向我正在开发的系统上的API发送一个文件。前端使用jquery,而后端使用C#(.netcore) 我已经在后端启用了CORS,一切正常。上传在localhost中工作正常,但是当我在实际服务器上尝试时,我得到了这个CORS错误 如何发送数据: $('#input-upload').change(function(event) { self.form = new FormData(); self.f

我正在尝试向我正在开发的系统上的API发送一个文件。前端使用jquery,而后端使用C#(.netcore)

我已经在后端启用了CORS,一切正常。上传在localhost中工作正常,但是当我在实际服务器上尝试时,我得到了这个CORS错误

如何发送数据:

            $('#input-upload').change(function(event) {
                self.form = new FormData();
                self.form.append('arquivo', event.target.files[0]); 

                $.ajax(
                {
                    url: ControleDePagamentosModel.getUploadUrl(self.selected), 
                    data: self.form,
                    processData: false,
                    contentType: false,
                    type: 'POST'
                })
                .done(function(data)
                {
                    console.log(data);
                    if (data.error)
                    {
                        alert(data.message);
                    }
                    else if (data.message)
                    {
                        alert(data.message);
                    }
                })
                .fail(function()
                {
                    alert("Erro de comunicação com o servidor de dados!");
                });  
            });
服务器终结点:

[HttpPost]
[Route("upload/{id}/{username}")]
public async Task<ResponseDTO> UploadFGTSAsync([FromForm] IFormFile arquivo, int id, string username)
{
    string path = "";

    if (arquivo !=null && arquivo.Length > 0)
    {
        ...

[HttpPost]
[路由(“上传/{id}/{username}”)]
公共异步任务上载fgtsasync([FromForm]ifformfile-arquivo,int-id,字符串用户名)
{
字符串路径=”;
如果(arquivo!=null&&arquivo.Length>0)
{
...
编辑:我的CORS配置:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddRouting();
            services.AddCors(o => o.AddPolicy("apiPolicy", builder =>
            {
                builder.AllowAnyOrigin()
                       .AllowAnyMethod()
                       .AllowAnyHeader();
            }));
            services.AddMvc().AddNewtonsoftJson(
                options => 
                {
                    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
                    //options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
                    options.SerializerSettings.MaxDepth = 1;
                }
            );
            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "EmccampAPI", Version = "v1" });
            });

            services.Configure<IISOptions>(o =>
            {
                o.ForwardClientCertificate = false;
            });

            services.AddHttpClient();
            services.AddDbContext<DBCONTROLEMPContext>(options => options.UseSqlServer(Configuration.GetConnectionString("ControlEmp")));
            //services.AddDbContext<RMContext>(options => options.UseSqlServer(Configuration.GetConnectionString("RM")));

            services.AddTransient<IConfigService, ConfigService>();
}
public void配置服务(IServiceCollection服务)
{
services.AddRouting();
services.AddCors(o=>o.AddPolicy(“apiPolicy”,builder=>
{
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
services.AddMvc().AddNewtonsoftJson(
选项=>
{
options.SerializerSettings.ReferenceLoopHandling=ReferenceLoopHandling.Ignore;
//options.SerializerSettings.NullValueHandling=NullValueHandling.Ignore;
options.SerializerSettings.MaxDepth=1;
}
);
services.AddControllers();
services.AddSwaggerGen(c=>
{
c、 SwaggerDoc(“v1”,新OpenApiInfo{Title=“EmccampAPI”,Version=“v1”});
});
服务配置(o=>
{
o、 ForwardClientCertificate=false;
});
services.AddHttpClient();
services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“ControlEmp”));
//services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“RM”));
services.AddTransient();
}
请注意,所有其他请求都有效

我已经在后端启用了CORS,一切正常。在localhost中上载可以正常工作,但是当我在实际服务器上尝试时,我得到了这个CORS错误

请注意,所有其他请求都有效

要解决此问题,请尝试将策略显式应用于该特定端点,如下所示

[EnableCors("apiPolicy")]
[HttpPost]
[Route("upload/{id}/{username}")]
public async Task<ResponseDTO> UploadFGTSAsync([FromForm] IFormFile arquivo, int id, string username)
{
    //...

您启用的cors设置是什么?!试试这个!$.ajax({url:controledepagmentosmodel.getUploadUrl(self.selected),data:self.form,processData:false,contentType:false,type:'POST',headers:{“接受”:“应用程序/json”,“访问控制允许来源”:“*”})不起作用。请注意,所有其他请求都起作用,我已从所有来源、方法和标题启用了CORS。我怀疑这与内容类型有关,但如果我不使用
contentType:false
,它会给我一个400错误。您好@ReisAlex,您尝试过我共享的解决方案吗?
<requestFiltering>
    <requestLimits maxAllowedContentLength="90000000" />
</requestFiltering>