路線の違いは何か:私が使用している場合は、パラメータや他の方法を必要としないものがintergerパラメータを必要と...WebApiConfig&Iは、2つのGetメソッドを実装しているWebApiController
//Get api/<controller>
public IEnumerable<EmployeeVM> Get()
{
List<EmployeeVM> list = new List<EmployeeVM>()
{
new EmployeeVM(){
FullName = "Milton Waddams"
},
new EmployeeVM(){
FullName = "Andy Bernard"
}
};
return list;
}
//Get api/<controller>
public string Get(int id)
{
return "value";
}
は、私WebApiConfigクラスの設定、
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}", new { id = RouteParameter.Optional });
次、私は次のようなエラーになるだろう:
を"The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.String Get(Int32)' in 'AngularForMVC.Controllers.EmployeeWebApiController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
今、私はこの次の構成を使用する場合:
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{action}/{id}", new { id = RouteParameter.Optional });
を、それが動作します。エラーなしでGet()メソッドを実行できます。
違いは何ですか? 2番目のコードリファレンスはなぜ機能しますか?私は、{アクション}をURLパスに追加したことを知っていますが、URLに{アクション}パスを含めなくても、これはまだ機能するはずです。
Application.Startの実装をglobal.asax.csに表示できますか? MVCルート登録の前にWeb APIルート登録が呼び出されていることを確認してください。 – CodeNotFound