1

私は次のURLを持っています:

localhost / api / machine / somecode / all

私は次のコントローラーを持っています:

 public class MachineController : ApiController
{
    public IEnumerable<Machine> Get()
    {
        return new List<Machine>
                   {
                       new Machine
                           {
                               LastPlayed = DateTime.UtcNow,
                               MachineAlertCount = 1,
                               MachineId = "122",
                               MachineName = "test",
                               MachinePosition = "12",
                               MachineStatus = "test"
                           }
                   };
    }

    public IEnumerable<Machine> All(string code)
    {
        return new List<Machine>
                   {
                       new Machine
                           {
                               LastPlayed = DateTime.UtcNow,
                               MachineAlertCount = 1,
                               MachineId = "122",
                               MachineName = "test",
                               MachinePosition = "12",
                               MachineStatus = "test"
                           }
                   };
    }
}

および次のルート:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
          name: "MachineApi",
          routeTemplate: "api/machine/{code}/all"
      );

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );


    }
}

しかし、何らかの理由でそれは解決していません-明白な理由は何ですか?

4

2 に答える 2

2

ええ、メソッド名 All を使用してアクションを推論します。また、一致するコントローラーを示す必要があるため、これはおそらく機能します。

config.Routes.MapHttpRoute(
      name: "MachineApi",
      routeTemplate: "api/machine/{code}/all",
      defaults: new { Action = "All", Controller = "Machine" }
  );
于 2012-12-14T11:18:06.420 に答える
0

この行のどこからコードを取得していますか?

 routeTemplate: "api/machine/{code}/all"

それが失敗したルートだと思います。

設定はいらないdefaults:ですか?

実際、これはデフォルトでは次のようになりません。

 api/machine/all/{code}

Firefox の [ネット] タブを調べてみましたか? これにより、行こうとしたルートがわかります。

于 2012-12-14T10:54:11.097 に答える