gpt4 book ai didi

c# - 为什么让我的 ODataController 有一个复数名称会阻止它工作

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:36 26 4
gpt4 key购买 nike

我正在创建一个简单的项目来测试 Entity Framework 中的功能。在前端,我想要一个 SPA 应用程序,它使用 OData API 与服务器交互。我如下设置我的第一个 ODataController

public class BlogPostsController : ODataController
{
private readonly IBlogPostService _blogPostService;

public BlogPostsController(
IBlogPostService blogPostService)
{
_blogPostService = blogPostService;
}

[HttpGet]
[EnableQuery]
public IQueryable<BlogPost> GetBlogPosts()
{
return _blogPostService.Queryable();
}

[EnableQuery]
public SingleResult<BlogPost> GetBlogPost([FromODataUri] int key)
{
return SingleResult.Create(_blogPostService.Queryable().Where(bp => bp.Id == key));
}
}

我的 ODataConfig 设置如下

public static class ODataConfig
{
public static void Register(HttpConfiguration config)
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Entities.BlogPost>(typeof(Entities.BlogPost).Name);
config.Routes.MapODataServiceRoute("odata", "odata", builder.GetEdmModel());
config.AddODataQueryFilter();
}
}

我的网站托管在我机器上的 IIS 中,当我访问 http://localhost/mytestsite/odata/BlogPosts 时我得到一个 404。但是,如果我更改我的代码以更改我的 Controller 以将 BlogPosts 替换为 BlogPost,那么我可以访问 url http://localhost/mytestsite/odata/BlogPost一切都按预期工作。我的工作 Controller 在下面

public class BlogPostController : ODataController
{
private readonly IBlogPostService _blogPostService;

public BlogPostController(
IBlogPostService blogPostService)
{
_blogPostService = blogPostService;
}

[HttpGet]
[EnableQuery]
public IQueryable<BlogPost> GetBlogPost()
{
return _blogPostService.Queryable();
}

[EnableQuery]
public SingleResult<BlogPost> GetBlogPost([FromODataUri] int key)
{
return SingleResult.Create(_blogPostService.Queryable().Where(bp => bp.Id == key));
}
}

另一个问题是如果我尝试访问 http://localhost/FourTen.Blog.Web/odata/blogpost我也得到了 404。唯一的区别是 URL 中的 blogpost 是小写的。

我的问题是,我是否遗漏了一些命名约定,为什么 URL 区分大小写?

最佳答案

它不起作用的原因是您的配置。您使用名称 BlogPost 注册您的 EntitySet 如果您将其替换为 BlogPosts 它应该可以工作。

builder.EntitySet<Entities.BlogPost>(typeof(Entities.BlogPost).Name);

builder.EntitySet<Entities.BlogPost>("BlogPosts");

关于c# - 为什么让我的 ODataController 有一个复数名称会阻止它工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28851568/

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