【发布时间】:2014-05-13 17:09:10
【问题描述】:
我正在尝试使用 Web API 方法,但没有取得多大成功。
在我的控制器中,我有:
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; charset=utf-8'。
我有 1 个来自数据库的结果与 id “7”匹配,它应该返回。我不确定我做错了什么。有人可以帮忙吗?
【问题讨论】:
-
你的问题是你正在返回一个 EF 对象......不要那样做......创建一个模型并映射它。
标签: c# asp.net-web-api