Angular Client和ASP.NET Web API的

时间:2016-06-11 21:09:07

标签: angularjs asp.net-web-api cors

我有一个使用AngularJS构建的客户端应用程序,它使用RESTful ASP.NET Web API中的服务。到现在为止还挺好。我在Visual Studio上使用相同的解决方案创建了它们,API是一个ASP.NET项目,AngularJS是一个网站。两个项目都必须使用Windows授权,所以我创建了API,将windows授权作为项目创建者向导中的默认AA机制,对于AngularJS,我在项目的属性选项卡上启用了Windows身份验证。

为了测试两个应用程序之间的通信,我决定构建一个简单的服务。我创建了一个Quotation模型类,为它构建了控制器,然后添加了迁移并在数据库中添加了一些引用。然后我尝试从angular应用程序发送一个get请求,只是为了收到这个错误:

enter image description here

在研究了这个问题后,我意识到我必须在Web API上启用CORS。所以我去了NuGet Package Manager并将Microsoft.AspNet.Cors包添加到项目中。

enter image description here

然后我在WebApiConfig.cs上启用了CORS,如下所示:

namespace Web_API
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.EnableCors();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

我将标题添加到我的控制器类和方法中(以防万一在类上是不够的):

namespace Web_API.Controllers
{
    [EnableCors("*", "*","*")]
    public class QuotationsController : ApiController
    {
        private Web_APIContext db = new Web_APIContext();

        // GET: api/Quotations
        [EnableCors("*", "*", "*")]
        public IQueryable<Quotation> GetQuotations()
        {
            return db.Quotations;
        }

但是,当我从AngularJS应用程序发出get请求时,仍然会出现相同的错误。有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

[EnableCors(origins: "*", headers: "*", methods: "*")]

也不要在您的方法中使用EnableCors。正如您在控制器上使用它一样,默认情况下所有方法都属于此规则。

我希望这能解决你的问题。感谢。