四虎影视库国产精品一区-四虎影视库-四虎影视久久久免费-四虎影视久久久-四虎影视久久-四虎影视精品永久免费网站

幫助中心
技術運維百科
iis開啟options請求 關于Web API 2.0中的Options請求返回405的問題
2017-07-11 14:46:07
ModelId=2&Id=791">

前提:IIS寄宿的網站

當你向服務器發送非簡單請求時,客戶端會先發送一條預檢請求,借以確認當前請求源和待請求方法是否被網站允許。(關于這種Http請求的詳細信息,請在道友的文章中學習)

道友的文章寫的很好,其提供的解決方案是使用一個微軟公司提供的官方DLL。為了不被DLL蒙在鼓里,本文提供了另外一種解決思路。

當客戶端向服務器發送Options請求時,Web API 2.0默認會吃掉它并返回405以表示該操作不被支持。究竟是IIS管線中的哪個步驟吃掉了它,我沒有研究明白。不過可以確定的是,問題出在Modulers里。在Web.config文件中,system.webServer下有個modules節點,如果將它的runAllManagedModulesForAllRequests屬性設置為True,也可以解決options 405問題。這個屬性默認是false,所以本文也不推薦這種方法。

Modules和Handler都是可以編程介入的,這個靈活性為我們提供了解決問題的渠道。具體步驟如下: (1)在App_Code文件夾下新建一個.cs文件,自定義一個類,并實現IHttpModule接口 (2)在Init方法中,為HttpApplication的BeginRequest事件添加一個自定義過程。 (3)在自定義過程中,攔截請求,判斷Request的HttpMethod屬性是否是options。如果是,就將響應的狀態碼設置為200,然后截斷后續處理,直接響應請求。 (4)在Web.config文件中添加自定義模塊。

以下是自定義模塊程序示例:

"language-C# hljs cs"> public class SpecialMethodModule : IHttpModule
{
public SpecialMethodModule() { }
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(this.BeginRequest);
}
public void Dispose() { }
USA-IDC為您提供免備案服務器 0元試用
立即聯系在線客服,即可申請免費產品試用服務