1

Asp.Net MVC4 Web API フレームワークに基づいて REST API を作成しようとしています。GETリクエストはうまく機能しています。他のすべての動詞はサーバーによって無視されています。次のように述べているだけです。

"No action was found on the controller 'Track' that matches the request."

エラーの例は Track コントローラーのものですが、他のすべてのコントローラーにも同じ問題があります。

これは、私が呼び出そうとしているコントローラー Track のメソッドです。

    [HttpPost]
    public Object Index(string token, string juke, string track)
    {
    }

JSON次のようなオブジェクトを使用して試しました。

{ "track": "0000", "juke": "0000" }

そして、「通常の」方法を使用しようとしました:

track=0000&juke=0000

上記の例の「0000」は、実際の ID の代用です。

確実にRegister()fromも投稿していWebApiConfig.csます:

public static void Register(HttpConfiguration config)
    {
        config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
        config.Routes.MapHttpRoute(
            name: "DefaultIndexBackEnd",
            routeTemplate: "back-end/{controller}/{token}",
            defaults: new { action = "Index", token = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "DefaultBackEnd",
            routeTemplate: "back-end/{controller}/{action}/{token}",
            defaults: new { token = RouteParameter.Optional }
        );
    }
4

3 に答える 3

1

数時間記事を試して調査した後、私の問題を正確に説明している記事をついに見つけました! 同じ問題を抱えている場合は、記事をチェックしてください。

問題は[FromBody]、アクションの 1 つのパラメーターで属性を使用しなければならなかったことです。移動してモデルに移行した後juketrack最終的には期待どおりに機能しました.

助けてくれてありがとう、みんなが私を正しい軌道に乗せてくれました!

于 2015-01-21T14:45:07.080 に答える
1

でこれを試してくださいTrackController。複数のパラメーターを使用しているため、オプションとして宣言する必要があります。

[HttpPost]
public Object Index(string token="", string juke="", string track="")
{
}

はルーティング構成でオプションとして宣言されているため、パラメータをtoken必須にすることができます。アクションに複数のパラメーターがある場合は、属性を使用することをお勧めします。tokenDefaultIndexBackEnd[FromBody]POST

于 2015-01-21T13:31:56.537 に答える