2016-09-07 4 views
0

ODataを使用するようにWebサービスを変換中です。 私は以下のようにODataControllerの実装を作成しました:OData 4 AspNet:パラメータでGETが機能しない

public class PersonController : ODataController 
{ 

    public PersonController() 
    { 

    } 

    public IHttpActionResult Get() 
    { 
     return Ok(new Person()); 
    } 

    public IHttpActionResult Get([FromODataUri] int key) 
    { 
     return Ok(new Person()); 
    } 

    protected override void Dispose(bool disposing) 
    { 
    } 
} 

そしてそうのようなモデルを登録:

​​

ウェブアプリは問題なく展開、そして私が呼ぶとき最初の機能が動作します。

http://localhost:9200/odata/Customer 
-> 
{ 
    "@odata.context":"http://localhost:9200/odata/$metadata#Person/$entity","Name":"John" 
} 

ただし、http://localhost:9200/odata/Customer(1)の呼び出しに失敗した場合、サーバーログのトレースは、ルートが見つからないことを示します。

iisexpress.exe Information: 0 : Response, Status=404 (NotFound), Method=GET, Url=http://localhost:9200/odata/Person(1), Message='Content-type='application/xml; charset=utf-8', content-length=unknown' 

ODataRoutePrefix、ODataRoute、EnableQueryをメソッドに使用して異なる属性順列を試しましたが、今のところ何も役立たないようです。私が見たチュートリアルではこれがうまくいくはずだと言われています。誰にもアイデアはありますか?

答えて

0

私は自分の問題を解決することができました。

問題は、エンティティ内で定義されたKeyがString型であることでした。 これは、FromODataUriによって抽出されたキーもString型でなければならないことを意味しました。

この例では、キーをString型に変更するか、Personキーをint型に変更することで問題を解決できます。

関連する問題