gpt4 book ai didi

c# - 网络 API 不工作

转载 作者:行者123 更新时间:2023-11-30 15:29:30 25 4
gpt4 key购买 nike

我正在尝试使用网络 API 方法,但没有取得多大成功。

在我的 Controller 中我有:

public class TestAPIController : ApiController
{
public string Get()
{
return "Hello World";
}

public Cours Get(int id)
{
using (SSDEntities Entity = new SSDEntities())
return Entity.Courses.SingleOrDefault<Cours>(a => a.ID == id);
}

在我的 Global.asax 中我有:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "ApiWithAction",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);

routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index" } // Parameter defaults
);

}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);

}

问题是,如果我键入/api/TestAPI,我会成功看到“Hello World”,但是/api/TestAPI/7 会给出以下异常消息:“ObjectContent`1”类型无法序列化响应主体内容类型“应用程序/xml;字符集=utf-8'。

我从数据库中找到了 1 个匹配 ID“7”的结果,它应该返回。我不确定我做错了什么。谁能帮忙?

最佳答案

映射到模型。您真的不应该尝试序列化事件的 EF 对象。它失败的原因有很多。正如所指出的那样,这可能是因为它具有惰性属性,但您也可能在对象中有循环。只需将您需要的内容映射到模型即可。

public CoursModel Get(int id)
{
using (SSDEntities Entity = new SSDEntities())
return Entity.Courses.SingleOrDefault<Cours>(a => a.ID == id)
.Select(x=> new CoursModel()
{ MAP STUFF HERE });
}

关于c# - 网络 API 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637569/

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