0

次のようなURLを満たすOdataメソッドを作成しようとしています

ドメイン:ポート/製品/100/RedirectUrl()

[ODataRoute("{id}/RedirectUrl()")]
public IHttpActionResult RedirectUrl(int id)
{
   return Redirect("myUrl" + id);
}

しかし、私は次のような例外を得ました

コントローラー 'Products' のアクション 'RedirectUrl' のパス テンプレート '{id}/RedirectUrl()' は、有効な OData パス テンプレートではありません

私のWebapi構成には含まれています

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Product>("Products");
builder.EntityType<Product>().Function("RedirectUrl").Returns<IHttpActionResult>();

これを達成する方法はありますか?

4

1 に答える 1

0

キーをセグメントとして有効化し、このhttps://github.com/OData/WebApi/pullsを追跡すると、UrlConventions.ODataUrlConventions を設定して有効にすることができます。または、これを実現するにはDefaultODataPathHandlerをオーバーライドする必要があります。Parseなどのプライベート メソッドをコピーする必要がある場合があります。

于 2015-08-12T03:59:15.743 に答える