2017-04-06 11 views
1

.NET Core MVC Restサービスで新しいコントローラを作成しましたが、APIを呼び出すときにPOST関数にルーティングされません。.NETコアMVCコントローラがPOST関数にルーティングされない

私はこれとまったく同じ形式の既存のコントローラを持っていますが、なぜサービス機能が呼び出されないのか判断できません。要求は常にジェネリック500エラーを返します。

URL: https://address:port/api/TOSResponse

using System.Collections.Generic; 
using Microsoft.AspNetCore.Mvc; 
using MyProject.ActionFilters; 
using MyProject.Common.Exceptions; 
using MyProject.Services; 

namespace MyProject.Controllers 
{ 

    [ServiceFilter(typeof(KeyValidatorFilter))] 
    [Route("api/[controller]")] 
    public class TOSResponseController : Controller 
    { 

     private ITOSResponseService _tosResponseService; 

     public TOSResponseController(ITOSResponseService tosResponseService) 
     { 
      _tosResponseService = tosResponseService; 
     } 

     [HttpPost] 
     public IActionResult Post([FromBody] List<Models.TermsOfServiceResponse> tosResponses) 
     { 
      try 
      { 
       _tosResponseService.InsertOrUpdate(tosResponses); 
       return new OkResult(); 
      } 
      catch (PLException ex) 
      { 
       return new BadRequestObjectResult(ex.ErrorValue); 
      } 
     } 

    } 
} 
+0

をあなたが使用しているURLを表示する必要があります:ITOSResponseServiceへの参照が解決できなかったので、コントローラーもインスタンス化されていなかった、私はStartup.csConfigureServices機能でIoCコンテナでサービスを登録することを怠っおよびServiceFilterロジック。 – mason

+0

私は答えを編集するつもりです –

答えて

1

問題は、あなたがServiceFilterとして追加したことをKeyValidatorFilterで存在することができます。これは最初にヒットし、コントローラーにヒットする前にユーザーに500を返す可能性があります。他のコントローラでこのフィルタを使用していますか?デバッグモードでフィルタにブレークポイントを追加し、何が起こるかを確認してください。

+0

これは私の考えでしたが、それもヒットしていません –

1

私はこの問題を発見しました。

public class Startup 
{ 
    //... 
    public void ConfigureServices(IServiceCollection services) 
    { 
     //... 
     services.AddTransient<ITOSResponseService, TOSResponseService>(); 
     //... 
    } 
    //... 
} 
関連する問題