web-dev-qa-db-ja.com

ASP.NET Web APIのオプションパラメーターを使用した属性ルーティング

Web API 2属性ルーティングを使用してカスタムAPIをセットアップしようとしています。関数が呼び出されるようにルートを機能させましたが、何らかの理由で、すべてが正しく機能するために最初のパラメーターを渡す必要があります。サポートしたいURLは次のとおりです。

http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=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
    }
}
40
sohum

Web APIでは、null許容型でもオプションの値を明示的に設定する必要があります。したがって、以下を設定してみて、最初のリクエストが成功することを確認してください。

DateTime? parameter2 = null
67
Kiran Challa