0

次のようにリソースにアクセスしたい:

     /api/adddevice/12345

このルートで間違っているのは何ですか?

    routes.MapRoute(
            name: "AddDevice",
            url: "adddevice/{id}",
            defaults: new { controller = "some controller", action = "adddevice", id = UrlParameter.Optional }
    );


    public string AddDevice(int id)
    {
        return "Device " + id.ToString() + " succesfully added";
    }

編集

エラーの詳細は次のとおりです。

     <MessageDetail>
        No type was found that matches the controller named 'some controller'.
     </MessageDetail>
4

2 に答える 2

3

URLを次のようにしたいと言います:

/api/adddevice/12345

しかし、あなたのルートマッピングはこれを持っています:

url: "adddevice/{id}",

一致しないことがわかりますか?マッピングには最初はありませんapi/。呼び出しで指定された URL は、すべての URL (もちろんホスト部分を除く)MapRoute()と一致する必要があります。入力している URL から削除するか、マッピングしている URL に追加してください。/api/

ちなみに、routes.MapRoute()MVC用です。あなたが望むWebApiのためにconfig.Routes.MapHttpRoute()

于 2013-03-12T16:50:11.087 に答える
1

ルートで「api」を見逃しており、MVC ルーティングを使用しているようです。

これは、RouteConfig ではなく WebApiConfig に追加する必要があることに注意してください。

config.Routes.MapHttpRoute(
                name: "AddDevice",
                routeTemplate: "api/adddevice/{id}",
                defaults: new { controller = "somecontroller", action = "adddevice", id = UrlParameter.Optional }
                );
于 2013-03-12T16:18:33.127 に答える