Asp.net web api Asp.Net核心WebAPI CORS不工作

Asp.net web api Asp.Net核心WebAPI CORS不工作,asp.net-web-api,asp.net-core,cors,asp.net-core-webapi,Asp.net Web Api,Asp.net Core,Cors,Asp.net Core Webapi,我正试图通过使用.NETCore实现WebAPI服务,但我无法成功地将CORS设置为正常工作 我得到了主应用程序“MainApp”,它将动态生成发票,我想将其作为服务进行推广。这不是一个纯粹的WebAPI应用程序。我只想将此InvoiceController添加为WebAPI,还有其他控制器,如HomeController、ProductsController等。。。使用视图和cshtml 我得到了单独的经典WebForm.Net应用程序,它将通过Ajax调用InvoiceGeneration服

我正试图通过使用.NETCore实现WebAPI服务,但我无法成功地将CORS设置为正常工作

我得到了主应用程序“MainApp”,它将动态生成发票,我想将其作为服务进行推广。这不是一个纯粹的WebAPI应用程序。我只想将此InvoiceController添加为WebAPI,还有其他控制器,如HomeController、ProductsController等。。。使用视图和cshtml

我得到了单独的经典WebForm.Net应用程序,它将通过Ajax调用InvoiceGeneration服务,并在网站上显示值

当我运行ajax脚本时,出现了一个著名的CORS错误

这是我的ajaxget方法。我是否放置
xhrFields
并不重要。我甚至更改了
数据类型:“jsonp”
,它仍然给我同样的错误

$.ajax({
                type: "GET",
                url: 'http://localhost:57012/invoice/test/123',
                dataType: 'json',                
                contentType: 'application/json',
                success: function (data) {                    
                    console.log(data);
                },
                xhrFields: {
                    withCredentials: true
                }
            });
InvoiceController.cs

我的发票服务很简单。。。只有一个方法返回一些JSON值

因为我使用策略和声明来确定安全性,所以我将
AllowAnonymous
属性设置为。即使我取消了这个限制,它仍然不起作用

public class InvoiceController : Controller
    {        
        [HttpGet]
        [AllowAnonymous]        
        [EnableCors("AllowAll")]
        public async Task<IActionResult> Test(string id)
        {

            return new JsonResult(id);
        }
    }
如下所示设置ajax:

$.ajax({
            type: "GET",
            url: 'http://oakapi/staff/byid/2618',
            dataType: 'jsonp',                
            contentType: 'application/javascript',
            success: function (data) {
                console.log(data);
            }             
        });

我认为service.AddCors()应该放在service.AddMvc()之前。

我很好奇,对于您的[EnableCors],您使用的是什么依赖关系?它是Microsoft.AspNet.Cors吗?它来自Microsoft.AspNetCore.Cors。理论上,我们不需要使用它,因为我们在Startup.cs中设置了它。我之所以这么说,是因为我的解决方案都不管用,而且都没有尝试过。
$.ajax({
                type: "GET",
                url: 'http://oakapi/staff/byid/2618',
                dataType: 'json',                
                contentType: 'application/json',
                success: function (data) {
                    console.log(data);
                }             
            });
$.ajax({
            type: "GET",
            url: 'http://oakapi/staff/byid/2618',
            dataType: 'jsonp',                
            contentType: 'application/javascript',
            success: function (data) {
                console.log(data);
            }             
        });