C# 如何在MVCAPI中重写OData查询?
我正试图覆盖OData查询 我想升级我的应用程序 旧的应用程序获得如下用户对象:C# 如何在MVCAPI中重写OData查询?,c#,asp.net-mvc,entity-framework,odata,C#,Asp.net Mvc,Entity Framework,Odata,我正试图覆盖OData查询 我想升级我的应用程序 旧的应用程序获得如下用户对象: http://localhost:12345/api/users/?$filter=用户名eq“测试” 新的应用程序将获得如下用户对象: http://localhost:12345/api/users/?userName=test 我想支持旧的应用程序,并覆盖OData查询?$filter=… 通过重写,我可以使用新方法并返回正确的用户对象 有没有办法覆盖OData查询 附言:我需要保持$top和$orderby
http://localhost:12345/api/users/?$filter=用户名eq“测试”
新的应用程序将获得如下用户对象:
http://localhost:12345/api/users/?userName=test
我想支持旧的应用程序,并覆盖OData查询?$filter=…
通过重写,我可以使用新方法并返回正确的用户对象
有没有办法覆盖OData查询
附言:我需要保持$top和$orderby OData查询不变
谢谢 WCF DS没有提供一种方法来实现这一点。但是IIS可以帮助您 我们的想法是重写url,使用url重写模块更改您需要的url。例如,在您的情况下,您应该指定当IIS接收到包含用户名的请求时,它会将其重写为使用$filter
当然,我没有在您的应用程序中测试它,但我们在项目中就是这样做的,以保持版本兼容性
您应该阅读更多关于它的内容,因为您可以使用IIS模块做很多事情
<rewrite>
<rules>
<rule name="Compatibility with older versions" enabled="true" stopProcessing="true">
<match url="^api/users/?$userName eq (.*)" />
<action type="Rewrite" url="http://localhost:12345/api/users/?$filter={R:2}"/>
</rule>
</rules>
</rewrite>