gpt4 book ai didi

c# - 没有注册非 OData HTTP 路由

转载 作者:IT王子 更新时间:2023-10-29 04:47:54 25 4
gpt4 key购买 nike

我关注了this创建 WebAPI REST 服务的教程。

之后,我可以通过指向 http://baseaddress/api/Contacts 来加载所有联系人的列表。

然后我在 WebApiConfig.cs 的 Register 方法中添加了以下代码以启用 OData 端点:

config.Count().Filter().OrderBy().Expand().Select().MaxTop(null);

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Contact>("Contacts");
config.MapODataServiceRoute(
routeName: "OData",
routePrefix: "odata",
model: builder.GetEdmModel());

并且还在 Contact.GetContacts() 方法上添加了 [EnableQuery] 参数。这样,我就可以像这样查询特定的联系人:

http://baseaddress/odata/Contacts?$filter=startswith(Name,'A')

它就像魅力一样。

不幸的是,当我输入 [EnableQuery] 时,WebAPI 端点停止工作,而是显示以下错误:

No non-OData HTTP route registered.

in System.Web.OData.Extensions.HttpConfigurationExtensions.GetNonODataRootContainer(HttpConfiguration configuration)
in System.Web.OData.Extensions.HttpRequestMessageExtensions.GetRootContainer(HttpRequestMessage request, String routeName)
in System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestScope(HttpRequestMessage request, String routeName)
in System.Web.OData.Extensions.HttpRequestMessageExtensions.CreateRequestContainer(HttpRequestMessage request, String routeName)
...

我应该怎么做才能解决这个问题?

最佳答案

我遇到了这个问题,因为我正在使用依赖注入(inject),所以我设法通过将 GlobalConfiguration.Configuration.EnableDependencyInjection() 添加到我的 startup.cs 来解决这个问题

例如

using System.Web.OData.Extensions;
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalConfiguration.Configuration.EnableDependencyInjection();
}
}

关于c# - 没有注册非 OData HTTP 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com