재우니의 블로그

 

 

ASP.NET MVC 에서 WEB API 를 호출할때, 404 또는 405 같은 오류가 발생한다면?

즉 header 에 put, delete 를 넣어서 사용할 때 오류가 발생합니다. 이를 사용하기 위해선~~~

 

우선 WEB.CONFIG 에 아래와 같은 HANDLER 를 추가하시기 바랍니다. 자세히 보면 이는 IIS 설치 시 WebDev 까지 설치할 경우, 문제가 발생되는 부분이므로 web api 를 사용하고자 한다면 해당 핸들러를 iis 에서 삭제 또는 web.config 에서 컨트롤이 가능합니다.

 

If you got the 404/405 error on Web API put request, please update web.config file to like below to remove WebDAV.
 
  <system.webServer>
    <handlers>
      <remove name="WebDAV" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>
  </system.webServer>