Angular 2-Dienst einen Anruf zu einem ASP.NET-Core 1.0 Web-API-Controller-Klasse ermöglichen, aber ich habe diesen Fehler:Kann nicht Cross-Origin-Anfragen (CORS) in ASP.NET-Core 1.0
card.service.ts: Angular 2-Code. Dies läuft auf http://localhost:3000
. Ich bezweifle, dass es hier ein Problem gibt.
import { Injectable } from 'angular2/core';
import { Http, Response } from 'angular2/http';
import { Observable } from 'rxjs/Observable';
import { ICard } from './card';
@Injectable()
export class CardService {
constructor(private _http: Http) { }
getCards(): Observable<ICard[]> {
return this._http.get('http://localhost:8462/api/card')
.map((response: Response) => <ICard[]>response.json())
.do(data => console.log("getCards: " + JSON.stringify(data)))
.catch(this.handleError);
}
private handleError(error: Response) {
console.error(error);
return Observable.throw(error.json().error || 'Server error')
}
}
Startup.cs: ASP.NET-Code-Core. Läuft auf http://localhost:8462
. Ich glaube, das Problem besteht darin, CORS zu meiner Startup.cs-Datei hinzuzufügen. Ich habe versucht, die ASP.NET docs on CORS, sowie viele andere CORS Führer ohne Glück zu folgen.
public void ConfigureServices(IServiceCollection services)
services.AddMvc();
services.AddCors();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseIISPlatformHandler();
app.UseApplicationInsightsExceptionTelemetry();
app.StaticFiles();
app.UseCors(builder =>
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
);
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
Hmm, ich habe es gerade ausprobiert und es funktioniert gut für mich. Können Sie zeigen, wie Sie den Webservice aufrufen? Kannst du es auch ohne die "http" -Bibliothek von Angular 2 ausprobieren (was sich in der Vergangenheit als etwas merkwürdig herausgestellt hat); etwas wie 'fetch ('http: // localhost: 8462/api/card', {Modus: 'cors'})'. Überprüfen Sie außerdem die Netzwerkregisterkarte, um festzustellen, ob der Dienst tatsächlich alle CORS-Header sendet. Welche Version von ASP.NET Core läuft auch? Ist das RC1 oder hast du einige dev builds (ich habe das letzte nur getestet)? Und führen Sie dies durch IIS oder Kestrel direkt von der Befehlszeile aus? – poke
Ich habe den gleichen Anruf mit Fiddler gemacht. Habe einen ähnlichen 401 Fehler. Ich laufe auf ASP.NET RC1. Ich führe es durch IIS. – Derek