2017-02-28 23 views
9

私はthisのチュートリアルに従ってWebAPI RESTサービスを作成しました。OData以外のHTTPルートが登録されていません

その後、私はhttp://baseaddress/api/Contactsを指すことによってすべての連絡先のリストを読み込むことができました。

はそれからのODataエンドポイントを可能にするためにWebApiConfig.csにRegister方法で次のコードを追加:

config.Count().Filter().OrderBy().Expand().Select().MaxTop(null); 

ODataModelBuilder builder = new ODataConventionModelBuilder(); 
builder.EntitySet<Contact>("Contacts"); 
config.MapODataServiceRoute(
    routeName: "OData", 
    routePrefix: "odata", 
    model: builder.GetEdmModel()); 

またはContact.GetContacts()方法で[EnableQuery]パラメータを追加しました。こうすることで、私はこのような特定の連絡先を問い合わせることができます:

http://baseaddress/odata/Contacts?$filter=startswith(Name,'A') 

これは魅力的です。私は[EnableQuery]を置くとき

残念ながら、WebAPIのエンドポイントは、代わりに次のエラーを示し、動作を停止:

No non-OData HTTP route registered. 

in System.Web.OData.Extensions.HttpConfigurationExtensions.GetNonODataRootContainer(HttpConfiguration configuration) 
in System.Web.OData.Extensions.HttpRequestMessageExtensions.GetRootContainer(HttpRequestMessage request, String routeName) 
in System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestScope(HttpRequestMessage request, String routeName) 
in System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestContainer(HttpRequestMessage request, String routeName) 
... 

私はこの問題を解決するにはどうすればよいですか?

+0

この回答はありましたか?私は同じ問題に遭遇している。 ; ' ' httpConfiguration.EnableDependencyInjection(); ' ' VAR要求=新しいHttpRequestMessage(HttpMethod.Get 'VAR httpConfiguration =新しいHttpConfiguration(): –

+0

@MichaelBowmanは残念ながら – Teejay

答えて

10

私はこの問題が発生した、と私は依存性の注入で働いているので、私は私のstartup.cs

元にGlobalConfiguration.Configuration.EnableDependencyInjection()を追加することによってこの問題を解決するために管理。私の場合は

using System.Web.OData.Extensions; 
public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     GlobalConfiguration.Configuration.EnableDependencyInjection(); 
    } 
} 
+0

あなたがGlobalConfigurationを使用していない場合は、上記のように変更していません、(Uri)Request.Url); ' 'request.SetConfiguration(httpConfiguration);' –

0

、私はすべてので何ODATAコードを持っていた別のプロジェクト、を持っていたにもかかわらず、上記のエラーが発生しました。だから、これは非常に奇妙なメッセージです。

私の解決策はで、packagesフォルダからすべてのパッケージを削除することでした。その後、それは再び働いた。一部のOdataパッケージはまだこのフォルダにあります。