私は、OdataControllersを使用してASP.NET Web API 2 Webサービスを作成しています。EnableQueryAttributeのPageSizeプロパティを使用してページサイズを設定する方法を見つけました。 Webサービスのユーザーがapp.configでページサイズを設定してから、アプリケーションにこの設定を読み込ませてページサイズを設定させたいと考えています。問題は、属性を使用するにはPage Sizeがコンパイル時定数に設定されている必要があることです。属性のWebAPIアプリケーションで実行時にOData結果ページサイズを設定する
使用法:
[EnableQuery(PageSize = 10)]
public IHttpActionResult GetProducts()
{
return repo.GetProducts();
}
は私が見てきた一つの提案された解決策はEnableQueryAttributeを構築し、この
int customSize = ReadPageSizeSettingFromConfigFile();
var attr = new EnableQueryAttribute { PageSize = customSize };
config.AddODataQueryFilter(attr);
ようHTTPConfiguration設定オブジェクトにそれを設定することですが、これは実際には動作しません。 。 HttpConfigurationのFilterコレクションは空のままです。
(コメントの一覧に埋もれて)別のポストにコメントがすべてEnableQueryは、コントローラの属性が、それはどちらかの効果がありません削除を提案しました。 EnableQuery属性が古いQueryable属性を置き換えたので、これはMicrosoftの問題であるかどうか疑問に思っています。
この質問は前に尋ねたと答えていないされています:How limit OData results in a WebAPI
すべてのヘルプは大歓迎です。
localhost/odata/Customers?$top=10&$skip=10
について動的に設定ページサイズ:
public class MyEnableQueryAttribute : EnableQueryAttribute
{
public override IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
{
int pagesize = xxx;
var result = queryOptions.ApplyTo(queryable, new ODataQuerySettings { PageSize = pagesize });
return result;
}
}
にMaxTopための設定を設定することができます。ユーザーはweb-apiリクエストを行い、そのapiリクエストでapp.configファイルを変更しますか?良いアイデアだと確信していますか? –
私は明確にするために私の質問を拡大しました。私はapp.configから値を読み込み、実行時に設定したいと思います。 – cl0h