No' Access-Control-Allow-Origin'使用Entity和WebAPI 2的ASP.NET出错

时间:2015-11-25 01:21:39

标签: mysql asp.net azure asp.net-web-api

我知道这些帖子中有一些,但是我已经查看了所有我发现的内容并尝试了他们的解决方案但没有成功,现在我有点绝望了。这需要在明天结束之前完成 我建立了一个网站,在后端的Entity Framework上使用MySQL数据库和Web API 2,然后在前端使用js / jax,所有这些都在Azure上托管。
我正在制作更多HTML页面,与任何配置文件无关,然后我随机开始收到此错误。

  

XMLHttpRequest无法加载https://uocfabianwiles.azurewebsites.net/api/Courses。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:56401'因此不允许访问。响应的HTTP状态代码为500。

我使用以下代码启用CORS

var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);

通过Swagger的https请求都没有给我带来任何错误,但是他们今天早上工作正常。

我尝试了什么:
根据{{​​3}}

将其添加到控制器
[EnableCors(origins: "http://msauocfabianwiles.azurewebsites.net/api/students", headers: "*", methods: "*")]

将自定义标头添加到web.config文件中 更改数据库
重新安装实体和MySQL Nuget包
在Visual Studio中通过调试在本地运行 - 没有来自VS的错误

编辑:我尝试删除数据库/网站并制作新的,以某种方式解决了CORS错误,但现在给了我500内部服务器错误,但只有70%的时间,其他30%加载没问题就好了

1 个答案:

答案 0 :(得分:0)

我曾经有过这个错误,但是我使用下面的代码解决了这个问题。

using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;

[assembly: OwinStartup(typeof(MyProject.Api.Startup))]
namespace MyProject.Api {
    public class Startup {
        public void Configuration(IAppBuilder app) {
            app.UseCors(CorsOptions.AllowAll);            
        }
    }
}

希望它有效。如果没有,请在WebApiConfig中尝试config.EnableCors();(不带属性)。

示例:

 public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services
            config.EnableCors();

            // Web API routes
            config.MapHttpAttributeRoutes();

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

希望它有所帮助。