백그라운드 정보가 먼저 있어야합니다. VS 2012 Express에서 만든 웹 양식 응용 프로그램 형태로 작동하는 웹 사이트가 있습니다. 그런 다음 ASP.NET MVC 4 웹 응용 프로그램 프로젝트를 추가하고 웹 API를 선택하여 웹 API를 추가하려고했습니다.기존 ASP.NET Web Forms 응용 프로그램에 웹 API를 추가 할 때의 문제
그래서 전체 프로젝트에는 세 가지 프로젝트가 있습니다.
- DAL (데이터 액세스 계층)
- 웹 양식 응용 프로그램
- 웹 API
(I 기존 프로젝트에 API를 추가하지만, 웹 API에있는을위한 자습서를 읽고 다른 프로젝트가 필요합니다.)
간단하게 유지하려면이 문제를 해결할 때까지 처음부터 포함 된 컨트롤러 만 사용하고 있습니다.
내 문제는 내가 예를 들어 실행하려고하면 404 오류를 찾을 수 없음 얻을 수 있습니다 : 이제
http://localhost:49919/api/Values
나는 또 다른 내 사이트에서 API에 액세스하려고하기 때문입니다 추측 계획. 하지만 몇 시간 동안 솔루션을 온라인으로 찾은 후에도 내 문제를 해결할 수있는 것을 찾을 수 없었습니다. 나는 같은 문제를 가진 사람들을 찾았지만 그들을위한 해결책은 나를 위해 일하지 않았다. 내가 지금까지 시도
일들은 다음과 같습니다
추가 사이트 프로젝트의 API에 대한 참조.
이 코드를 API Web.Config에 추가하십시오. 올바르게 이해한다면 프로젝트간에 액세스가 가능해야합니다.
<system.webServer> <httpProtocol> <customHeaders> <clear/> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> </customHeaders > </httpProtocol > </system.webServer >
WebApiConfig에서 내 라우팅은 다음과 같습니다
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
의 Global.asax를 API에는 다음과 같습니다
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
나는 완전히 새로운 프로젝트를 만드는 시도 웹 API만으로도 편집없이 작업 할 수있었습니다.
이것은 웹 API로 작업 한 첫 번째 사례입니다. 감사의 말을 전합니다.
편집 : 생각 나는 API의 목적을 추가 할 것입니다. DAL의 최신 메시지를 받아서 사이트의 jQuery/AJAX를 사용하여 보여줍니다.
Edit2 : API의 IIS 포트를 내 웹 사이트와 동일하게 변경했습니다.
웹 사이트 http://localhost:49919/
http://localhost:49919/api/(/api because they can't have the same url)
링크이 지금 49,919/API/API/값과 같이 API하지만 고정 할 수 있습니다.
물론 간단하지만 뭔가 할 일이 필요하다는 생각이 들었습니다.
가능한 복제본 http://stackoverflow.com/questions/9536362/asp-net-web-api-in-web-forms –
" "솔루션을 사용해 보았습니다. 아무것도하지 않았다. 나는 그의 시나리오가 내 것과 같다고 생각하지 않는다. –
webapi **의 기본 경로 템플릿에는 ** {action}이 (가) 포함되어 있지 않습니다. 문서를 참조하십시오. –