私は2つの方法、1つはパラメータなし、2つは異なる種類のパラメータ(文字列とint)を持つWeb APIを持っています。文字列メソッドを呼び出すと、それは動作しません...私はここで何が欠けていますか?文字列パラメータを使用してWeb APIを呼び出す
public class MyControllerController : ApiController
{
public IHttpActionResult GetInt(int id)
{
return Ok(1);
}
public IHttpActionResult GetString(string test)
{
return Ok("it worked");
}
}
WebApiConfig.cs:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
マイコール:
/api/MyController/MyString //Doesnt work
/api/MyController/1 //work
私はエラーを以下の取得:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Http.IHttpActionResult GetInt(Int32)' in 'TestAngular.Controllers.MyControllerController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
は、私は私の要求に何をしないのですか?
をWebAPIのWebMethod属性 –
2つの異なるエンドポイントで同じルートを使用することはできません。メソッドGetIntが勝ち、両方の要求に使用されます。 – PinBack
どうすればいいですか? routeTemplateに{action}を追加しますか? – MrProgram