【发布时间】:2019-01-20 09:16:49
【问题描述】:
文档非常少,我尝试过的所有结果都注入了反序列化程序,但正常的 odata url 不再起作用了。
https://github.com/OData/WebApi/issues/158 有针对 5.6 的解决方案。
最后的相关评论是:
@dbenzhuser - 在该提交中,查看 ODataFormatterTests.cs 以了解如何 注入自定义反序列化器/反序列化器提供程序。你仍然可以使用 一个自定义的 DeserializerProvider 但它是通过 DI 而不是 通过 ODataMediaTypeFormatters 注入。
这是毫无意义的。我在那里尝试了代码,但正如我所说,它破坏了 URL。
现在我的 Odata 设置很简单:
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddOData();
\UnitTest\Microsoft.AspNet.OData.Test.Shared\Formatter\ODataFormatterTests.cs
有注入它们的示例(如第 379-383 行)
config.MapODataServiceRoute("IgnoredRouteName", null, builder =>
builder.AddService(Microsoft.OData.ServiceLifetime.Singleton, sp => ODataTestUtil.GetEdmModel())
.AddService<ODataSerializerProvider>(ServiceLifetime.Singleton, sp => new CustomSerializerProvider())
.AddService<IEnumerable<IODataRoutingConvention>>(ServiceLifetime.Singleton, sp =>
ODataRoutingConventions.CreateDefaultWithAttributeRouting("IgnoredRouteName", config)));
但如果不删除核心 odata 路由,我似乎无法正常工作。
有人知道如何在不破坏基本功能的情况下将其用于当前版本吗?
【问题讨论】:
-
我知道这是旧的,但如果您发布 您的 实现或您尝试过的内容,而不是您无法解释的资源中的实现,它会有所帮助。