2016-04-28 11 views
4

角度2サービスASP.NETコア1.0のWeb APIコントローラークラスを呼び出すことが、私はこのエラーを取得:は、ASP.NETコアにクロスオリジン・リクエスト(CORS)を有効にすることはできません1.0

enter image description here

カード。サービス.ts:角2のコード。これはhttp://localhost:3000で実行されます。私はここに問題があるとは思わない。

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コアコード。実行はhttp://localhost:8462です。 CORSをStartup.csファイルに追加することが修正されていると思います。私はASP.NET docs on CORSのほか、多くの他のCORSガイドには運がないと試しました。

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?}"); 
     }); 
    } 
+0

ええと、私はそれを試してみました。あなたはどのようにWebサービスを呼び出すことができますか?またAngular 2の 'http'ライブラリ(これは過去にいくらか奇妙であることが分かっています)を使わずに試すことができますか? 'fetch( 'http:// localhost:8462/api/card'、{mode: 'cors'})'のようなものです。また、ネットワークタブをチェックして、サービスがCORS関連のヘッダーを実際に送信しているかどうかを確認します。また、どのバージョンのASP.NET Coreを実行していますか?このRC1ですか、いくつかのdevビルドを実行していますか(私は後者をテストしました)?そして、これをIISで実行しているのですか、コマンドラインから直接Kestrelを使用していますか? – poke

+0

私はFiddlerを使って同じ電話をしました。同様の401エラーが発生しました。私はASP.NET RC1で動作しています。私はIISを通じてそれを実行しています。 – Derek

答えて

1

私はそれを理解したと思う。最初に[ファイル]> [新規プロジェクト]を実行したとき、私はWindows認証を選択しました。それはエラーの原因となっているようです。

Windows認証を使用して新しいプロジェクトを作成し、Startup.csにCORSを追加してテストしました。同じエラーが発生しました。 Windows認証なしでCORSを追加した新しいプロジェクトを作成したときにエラーが発生しませんでした。

0

私は同じ問題がありました。私のトリックは「UseCors ..」を「UseMvc()」の前に置くことでした:-)

関連する問題