2016-06-14 6 views
0

私は答えが見つからないという奇妙な問題があります。.NET Web API CORSがすべてのルートで機能しない

Web APIアプリケーションでCORSを何度も使用して、この問題が発生していないクライアントアプリケーションからのクロスオリジン要求を許可しています。

私が持っている私のWebApiConfigクラスで:

[HttpPost] 
[Route("pedigree")] 
public IHttpActionResult GetPedigree([FromBody]Input input) 
{ 
    // some stuff  
    return Ok(result); 
} 

[HttpPost] 
[Route("descendants")] 
public IHttpActionResult GetDescendants([FromBody]Input input) 
{ 
    // some stuff   
    return Ok(result); 
} 

[HttpPost] 
[Route("relatives")] 
public IHttpActionResult GetRelatives([FromBody]Input input) 
{ 
    // some stuff    
    return Ok(person); 
} 

を最初の2つの方法が正常に動作し、データを返す:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     // Web API configuration and services 
     // Configure Web API to use only bearer token authentication. 
     config.SuppressDefaultHostAuthentication(); 
     config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 

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

     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 

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

私は、ルーティング属性を持つ3つのコントローラメソッドを持っています。 3番目はCORSに失敗します。

XMLHttpRequestはhttp://localhost:21870/api/familysearch/relativesをロードできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。 Origin 'http://localhost:8080'はアクセスできません。応答は、HTTPステータスコード500

を持っていた私は単純にすべての3つのメソッドのための角度からAJAX要求を作っています:

$http.post('http://localhost:21870/api/familysearch/relatives', postData) 
    .then(function (response) { 
     // do something 
    }).catch(function (e) { 
     // do something 
    }); 

誰もが任意のアイデアがありますか?

答えて

0

コントローラクラスにEnableCors属性を追加して、特定のWebAPIでCORSを有効にする必要がありますController

[EnableCors("*", "*", "*")] 
+0

入力いただきありがとうございますが、私はそれを試しましたが、違いはありません。とにかく、私のwebapiconfigのenablecorsは、すべてのコントローラとメソッドでグローバルにする必要があります。 – Starscream1984

関連する問題