웹 API 메소드를 사용하려고하는데 많은 성공을 거두지 못했습니다. 내 컨트롤러에서웹 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를 입력하면 내가 성공적으로 "안녕하세요"를 참조입니다 그러나/api/TestAPI/7은 다음 예외 메시지를 표시합니다. 'ObjectContent`1'형식이 'application/xml; 콘텐츠 형식에 대한 응답 본문을 serialize하지 못했습니다. charset = utf-8 '.
데이터베이스에서 반환 한 ID "7"과 일치하는 결과가 1 개 있습니다. 내가 뭘 잘못하고 있는지 모르겠다. 누구든지 도울 수 있니?
당신의 문제는 당신이 EF 객체를 반환한다는 것입니다 ... 그렇게하지 마십시오 ... 모델을 생성하고 그것을 매핑하십시오. – CrazyDart