[英]How do I allow the GET request for only one method or webservice?
正如我在這里發現的那樣 ,我可以更改webconfig以允許/禁止webservices中的方法。
我只需要一種方法成為GET,對於其他方法則應該是POST,是否有一種方法可以僅配置一種方法(如果沒有其他方法,則可以配置Web服務)以接受GET請求? 我在IIS7上。
取決於Web服務器。
例如,您可以針對Apache中的某些請求返回錯誤。
使用Limit
指令:
<Directory />
Options All
AllowOverride All
<Limit POST PUT DELETE CONNECT PROPFIND PROPPATCH>
# Require valid-user
Deny from all
</Limit>
</Directory>
編輯 -剛剛找到有關此文檔: http : //httpd.apache.org/docs/2.0/mod/core.html#limit
您可以通過在IIS中或通過web.config中定義的httpHandler映射更改處理程序映射來完成此操作。
或者,您可以讓HttpModule做到這一點。
但是,由於您已經在使用asp.net(通過標簽進行判斷),並且只有一個例外,所以一種更簡單的方法可能就是在該級別上進行。 如果不是,則從HttpModule執行此操作的邏輯幾乎相同。
在您的頁面基類中(如果尚未在System.Web.UI.Control.Page和您自己的頁面之間定義抽象類,可能值得一看,這是放置常用方法的方便位置)一個在主頁面加載處理程序之前被調用的虛擬成員(例如,有一個名為OnLoad的方法先調用此方法,然后再調用“真實”頁面加載方法)。
在此方法中,檢查使用的http方法,如果不正確,則將狀態代碼設置為405,輸出錯誤頁面以顯示加分標記,然后停止所有處理。
在允許獲取,覆蓋和更改檢查方法的頁面中。
如果您的類結構不允許輕松完成此操作,則HttpModule方法將更容易。 在這里,您必須檢查URI才能知道允許使用哪種方法,但是其余的幾乎相同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.