Web API 2属性ルーティングを使用してカスタムAPIをセットアップしようとしています。関数が呼び出されるようにルートを機能させましたが、何らかの理由で、すべてが正しく機能するために最初のパラメーターを渡す必要があります。サポートしたいURLは次のとおりです。
http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2¶meter3=value3&p4=v4
最後の3つのURLは機能しますが、最初のURLは「要求に一致するコントローラー 'コントローラー名'でアクションが見つかりませんでした」と言います。
私のコントローラーは次のようになります。
public class MyServiceController : ApiController
{
[Route("api/servicename/{parameter1}")]
[HttpGet]
public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "")
{
// process
}
}
Web APIでは、null許容型でもオプションの値を明示的に設定する必要があります。したがって、以下を設定してみて、最初のリクエストが成功することを確認してください。
DateTime? parameter2 = null