0

これらの質問が山ほどあったことは知っていますが、PostEmailTemplate アクションを呼び出すときに「要求に一致する複数のアクションが見つかりました:」というエラーが表示される理由がわかりません。アクション メソッドは次のとおりです。

(古いコードを削除)

更新 2: すべてのメソッドを削除し、ルートをデフォルト ルートに戻し、デフォルトのコントローラー インターフェイスを残しました。2 つの「get」メソッドは機能しますが、Post ではまだそのエラーが発生します。これがコントローラーです。

    public EmailTemplateModel Get(int id)
    public  List<EmailTemplateName> Get()
    public void Post([FromBody]EmailTemplateModel data)

これが唯一のルートです:

           RouteTable.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = System.Web.Http.RouteParameter.Optional }
            );
4

1 に答える 1

2

構成をテストするために簡単なプロジェクトを作成しましたが、構成が正しく実装されていることは確かでした。私のプロジェクトではすべてが正常に機能し、コントローラーに POST して正しい応答などを取得できます。

リクエストを正しく送信していますか? は、POST の送信先のアドレスであるhttp://<host>:<port>/api/<controller>必要があります。POST メソッドは 1 つしかないため、URI に追加のアクションは必要ありません。フレームワークはメソッドを取得し、そのメソッドを自動的に使用する必要があります。明らかに、「複数のアクション」エラーは、実際には 2 つ以上の POST メソッドがある場合にのみ発生します。

最後の手段は、メソッドが属するリクエストのタイプを明示的に指定することです。[HttpGet]これは、属性、などをその特定のメソッドに[HttpPost]追加することで実行できます。[HttpDelete]したがって、あなたの場合、 a[HttpGet]を両方の GET メソッドに追加し、 a[HttpPost]を POST メソッドに追加します。その場合、うまくいくかどうか興味があります。

于 2013-07-11T07:30:55.310 に答える