9

新しい v4 サービスを構築していますが、新しいモデル/エンティティ用の新しいコントローラーを追加し、テスト実行のためにサイトを起動するときにこのエラーが発生するまで、すべてがうまくいっていました。

コントローラーは、他のコントローラーと同様に、正しくコーディングされているようです。

コントローラー 'CustomersOData' のアクション 'GetFeed' のパス テンプレート 'Customers' は、有効な OData パス テンプレートではありません。セグメント「顧客」のリソースが見つかりません。

それは一体何を意味するのでしょうか?

4

2 に答える 2

4

このエラーは、Web API 属性ルーティング シナリオで発生します。Web API 属性ルーティングは、HttpConfiguration の初期化子を実行するときに、見つかったすべての ODataController のすべての ODataRouteAttributes をチェックします。

新しいモデル/エンティティを追加した後にエラーが発生したとのことでしたので、おそらく 2 つの Edm モデルがあると思います。

ModelA, ModelB

また、EntitySet "Customers" は、ModelA などのモデルの 1 つにのみ存在します。

さらに、新しく追加されたモデルに対して次のコードがある場合があります。

config.MapODataServiceRoute("...", "...", ModelB);

起動時に、Web API は次の属性を見つけます。

[ODataRoute("Customers")]
public IHttpActionResult Get()
{
 ...
}

しかし、Web API は ModelB に設定された "Customers" エンティティを見つけることができません。

すべてを 1 つのモデルにまとめることで解決できると思います。

于 2015-01-08T06:50:10.477 に答える
3

起動時にこれが発生する場合は、起動時に Customers モデル タイプをモデル ビルダーに追加したことを確認してください。

builder.EntitySet<CustomerModel>("Customers");

新しいコントローラーの属性マッピングが列挙されているように聞こえますが、Customer モデル タイプをエンティティ セットに戻すことはできません。

注: Q/AI はこれをほとんどすぐに理解しましたが、ここに投稿するのは、おそらくこれをもう一度やり、間違ったことを忘れてしまうからです!

于 2015-01-07T17:10:40.837 に答える