2015-10-08 3 views
1

Использование VS Code в OS X. Я пытаюсь заставить CORS работать с 1.0.0-beta7. Я не уверен, почему он не работает. «Не работает» Я имею в виду, что я получаю сообщение в своей консоли javascript, в котором говорится: «XMLHttpRequest не может загрузить {ommitedurl}. Нет заголовка« Access-Control-Allow-Origin »на запрошенном ресурсе. Origin 'http://run.plnkr.co' поэтому не допускается доступ ». Я попытался использовать метод AllowAllOrigins, а также указать один или несколько URL-адресов с помощью метода WithOrigins безрезультатно. Я публикую для Azure как веб-приложение, если это имеет значение. Я перечислил большинство из моего кода ниже. Кто-нибудь может мне помочь?ASP.NET 5 beta7 CORS не работает

Вот мой список DNVM:

dnvm list 

Active Version    Runtime Arch Location    Alias 
------ -------    ------- ---- --------    ----- 
     1.0.0-beta7   coreclr x64 ~/.dnx/runtimes  
     1.0.0-beta5   mono   ~/.dnx/runtimes  
    * 1.0.0-beta7   mono   ~/.dnx/runtimes  default 
     1.0.0-beta8   mono   ~/.dnx/runtimes  
     1.0.0-rc1-15798  mono   ~/.dnx/runtimes  
     dnx-mono    mono   ~/.dnx/runtimes  
     dnx-mono.1.0.0-beta8 mono   ~/.dnx/runtimes  

Вот мои project.json зависимости:

"dependencies": { 
    "Microsoft.AspNet.Cors": "1.0.0-beta7", 
    "Microsoft.AspNet.Mvc": "6.0.0-beta7", 
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta7", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta7", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-beta7", 
    "Microsoft.AspNet.WebApi.Client": "5.2.3", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-beta7", 
    "Microsoft.Framework.Configuration.Json": "1.0.0-beta7", 
    "System.Net.Http": "4.0.1-beta-23225", 
    "Newtonsoft.Json": "7.0.1" 
} 

Вот мой Startup.cs

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 
     services.ConfigureCors(options => 
     { 
      options.AddPolicy("AllowPlnkr", 
       builder => 
       { 
        builder.WithOrigins("http://run.plnkr.co"); 
       }); 
     }); 
     services.Configure<MvcOptions>(options => 
     { 
      options.Filters.Add(new CorsAuthorizationFilterFactory("AllowPlnkr")); 
     }); 
     services.AddScoped<ITrackerRepository, TrackerRepository>(); 
    } 

    public void Configure(IApplicationBuilder app) 
    { 
     app.UseMvc(); 
     app.UseCors("AllowPlnkr"); 
     app.UseDefaultFiles(); 
     app.UseStaticFiles(); 
    } 
} 

У меня также есть Атрибут EnableCors на моем контроллере

[EnableCors("AllowPlnkr")] 
[Route("api/[controller]")] 
public class TrackerController : Controller 
+0

Попробуйте переместить app.UseCors ("AllowPlnkr"); перед app.UseMvc(); – Tratcher

+0

Опишите "не работает" – mason

+0

@mason Я отредактировал свой вопрос. Спасибо –

ответ

3

Код был очень близок к работе. Мне нужно было немного изменить Startup.cs. Моя основная проблема заключалась в том, что мой код клиента был неправильным. Я попытался использовать jQuery.ajax(), и он сработал. Спасибо всем, кто прокомментировал и помог мне.

Вот мой Startup.cs:

public class Startup 
{ 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 
     services.ConfigureCors(options => 
     { 
      options.AddPolicy("AllowPlnkr", 
       builder => 
       { 
        builder.WithOrigins("http://run.plnkr.co"); 
       }); 
     }); 
     services.AddScoped<ITrackerRepository, TrackerRepository>(); 
    } 

    public void Configure(IApplicationBuilder app) 
    { 
     app.UseMvc(); 
     app.UseDefaultFiles(); 
     app.UseStaticFiles(); 
    } 
} 
Смежные вопросы