У меня работает два веб-приложения. App1 - это угловой SPA, а App2 - веб-приложение MVC, написанное на С#. Я выполняю оба приложения из Visual Studio 2015, запуская debug в IIS Express.
Мой угловой код (App1) пытается вызвать контроллер api в App2, используя следующий (отладочный) код:
$http.get('https://localhost:12345/api/values').then(function (response) {
alert(response.data);
}, function (err) {
alert(err);
}).catch(function (e) {
console.log("error", e);
throw e;
}) .finally(function () {
console.log("This finally block");
});
Я всегда нажимаю "alert (err)"; line - он никогда не выполняется успешно, и err не имеет ничего полезного в этом, чтобы указать, что может быть проблемой.
В Postman (addin для Chrome) я могу подтвердить вызов, который я пытаюсь сделать, чтобы App2 отлично работал. Что я делаю не так? Может ли это быть проблемой с CORS?
Заранее спасибо!
Хорошо, проблема у меня была в веб-api (MVC 6 - ASP.net 5), поскольку я должен был разрешать запросы с моего углового веб-сайта. Файл startup.cs добавил следующее:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddCors();
StartupInitialize(services);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
app.UseIISPlatformHandler();
app.UseStaticFiles();
app.UseCors(builder => builder.WithOrigins("http://localhost:12345/"));
app.UseMvc();
antiForgery = (IAntiforgery)app.ApplicationServices.GetService(typeof(IAntiforgery));
}
Вы либо сталкиваетесь с проблемой CORS/SAME ORIGIN POLICY, что некоторые сведения об этом в угловых js можно найти здесь: Как включить CORS в AngularJs.
так вы обрабатываете его на сервере в своем случае: http://docs.asp.net/projects/mvc/en/latest/security/cors-policy.html#cors-policy
или лучше откройте инструменты разработчика на вкладке консоли и принесите нам дополнительную информацию о том, что произошло в вашем коде.
err
, не имея ничего полезного в нем, возможно , опубликовать содержание в любом случае. Кроме того, поскольку в отладчике запущены оба сайта, действительно ли действие контроллера вообще срабатывает?