讓IIS7和IIS6識別PUT和DELETE請求


    項目組最近需要開展自動化測試,針對老的Aspx頁面,這個做自動化測試的成本太高,於是我們想從老代碼中封裝一些ashx的Restful服務出來,Restful我們使用HTTP的GET、POST、PUT、DELETE動詞來解決請求的類型判斷,但調用ashx的時候,請求返回405,意思是說目前的IIS配置不支持PUT或者DELETE的動詞(IIS默認關閉對這些動詞的支持),這里借用一下網上的圖片。

 

方法一:

      網上說法不一,但絕大多數是刪除應用程序的Web.Config中的webdav模塊,然后手動刪除IIS7 模塊中的WebDav模塊:

      1.刪除配置

<system.webServer>  
     <modules>  
         <remove name="WebDAVModule" />  
     </modules>  
     <handlers>  
         <remove name="WebDAV" />  
     </handlers>  
 </system.webServer>

      2.刪除模塊

      但這種方法不行。

      網上給出了另一種方法:

 

方法二(我使用的是這種方法):

      修改IIS的配置文件,配置文件地址:C:\Windows\System32\inetsrv\config\applicationhost.config

      在這個文件內找到handlers標記,該標記下有所有模塊的配置,修改對應模塊允許的謂詞即可,如:

 <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="C:\Windows

\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />

      同理,如果還有什么謂詞想加進來,直接在對應模塊的配置內添加即可。

  IIS6的配置文件地址是:C:\WINDOWS\system32\inetsrv\MetaBase.xml

 

 

方法三:

      有網友在stackorverflow上提供了一另一種方法:

      web.config中system.webServer添加

  <modules runAllManagedModulesForAllRequests="true" runManagedModulesForWebDavRequests="true" >
    <remove name="WebDAVModule" />
  </modules>

  <handlers>
    <remove name="WebDAV" />
  </handlers>

     最關鍵的就是在modules節點增加屬性runManagedModulesForWebDavRequests="true"  

      另外補充一下,在IIS6上如果要支持PUT、DELETE請求網上有介紹說先開啟webDAV擴展,再設置腳本和寫權限

 

參考文檔:

      http://www.cnblogs.com/muchengqingxin/p/6138443.html 

      https://support.microsoft.com/zh-cn/help/942051/error-message-when-a-user-visits-a-website-that-is-hosted-on-a-server-that-is-running-internet-information-services-7.0-http-error-405.0---method-not-allowed

      http://stackoverflow.com/questions/6739124/iis-7-5-enable-put-and-delete-for-restful-service-extensionless

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM