May 17, 2015

呼叫ASP.NET Web API出現HTTP 405錯誤

目前使用ASP.NET Web API開發web service已經是團隊的best practice。前幾天把寫好的service部署到測試環境(Windows 2012 Server + IIS 8),呼叫兩支需要使用到HTTP PUTDELETE的API,結果出現了405的錯誤訊息,但在本機(Windows 7 + IIS Express 8.5)測試時卻沒有類似問題


解決方式可以在<system.webServer>\<modules>下加入<remove name="WebDAVModule" />及<system.webServer>\<handlers>加入<remove name="WebDAV" />,如
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
    <remove name="OPTIONSVerbHandler" />
    <remove name="TRACEVerbHandler" />
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
  </handlers>
</system.webServer>

或是把WebDAV Publishing功能移除



No comments: