C# 支持使用ApicController,但不支持控制器.NET Framework 4.7.2

C# 支持使用ApicController,但不支持控制器.NET Framework 4.7.2,c#,.net,cross-domain,C#,.net,Cross Domain,在我的项目中,我有两种类型的控制器 公共类BaseApiController:ApicController 公共类BaseController:控制器 从角度看,我可以访问APIController,但无法访问控制器。获取跨源请求的错误被阻止。 尽管启用了交叉原点,因为我可以访问APIController var cors = new EnableCorsAttribute( origins: "*", headers: &qu

在我的项目中,我有两种类型的控制器

  • 公共类BaseApiController:ApicController
  • 公共类BaseController:控制器
  • 从角度看,我可以访问APIController,但无法访问控制器。获取跨源请求的错误被阻止。 尽管启用了交叉原点,因为我可以访问APIController

    var cors = new EnableCorsAttribute(
                origins: "*",
                headers: "*",
                methods: "*");
            config.EnableCors(cors);
    
    知道访问控制器还需要什么设置吗

    var cors = new EnableCorsAttribute(
                origins: "*",
                headers: "*",
                methods: "*");
            config.EnableCors(cors);
    

    提前感谢。

    我从这个URL获得了@Fitch建议的解决方案。

    创建一个类,如下所示

    using System;
    using System.Web.Mvc;
    
    public class AllowCrossSiteAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "http://localhost:4200");
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Headers", "*");
            filterContext.RequestContext.HttpContext.Response.AddHeader("Access-Control-Allow-Credentials", "true");
    
            base.OnActionExecuting(filterContext);
        }
    }
    
    并添加如下属性

        [Helpers.AllowCrossSite]
        public JsonResult GetDetails()
        {
            return Json(new
            {
                name = "",
                address = "",
                // ... more properties
            }, JsonRequestBehavior.AllowGet);
        }
    

    您是否尝试在web.config中添加“Access Control Allow Origin”?选项请求是否成功?@Giox,是的,我也尝试过,但根本不起作用,即使ApicController停止工作。@CaiusJard,是的,ApicController选项请求返回200,但没有返回Controller@CaiusJard,不,那些多余的空间不应该在那里,看起来在发布答案时出错了,我已经纠正了。