2014-01-30 1 views
2

백그라운드 정보가 먼저 있어야합니다. 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하지만 고정 할 수 있습니다.

물론 간단하지만 뭔가 할 일이 필요하다는 생각이 들었습니다.

+0

가능한 복제본 http://stackoverflow.com/questions/9536362/asp-net-web-api-in-web-forms –

+1

""솔루션을 사용해 보았습니다. 아무것도하지 않았다. 나는 그의 시나리오가 내 것과 같다고 생각하지 않는다. –

+0

webapi **의 기본 경로 템플릿에는 ** {action}이 (가) 포함되어 있지 않습니다. 문서를 참조하십시오. –

답변

1

내가 내 문제에 사용되는 솔루션 :

나는 내 웹 사이트 프로젝트와 같은 하나에 API 프로젝트에서 IIS 포트를 변경했습니다.

웹 사이트 http://localhost:49919/

API http://localhost:49919/api/

(/ API가 동일한 URL을 가질 수 없기 때문에)

링크는 지금 49,919/API/API/값을 다음과 같이

하지만를 그 수 고정되다.

관련 문제