2011-02-08 47 views
3

需要一些關於AJAX問題的幫助。AJAX因爲HttpModule打破了,如何阻止它發生?

我對使用AJAX進行異步處理的ASPX頁面有特定的控件。

我也有一個HttpModule爲特定的網站,攔截和過濾HttpRequest。

自安裝模塊以來,AJAX控件已損壞。這些控件似乎不會從AJAX Post中返回。這裏的HttpModule代碼:

public void Init(HttpApplication context) 
{ 
    context.ReleaseRequestState += new EventHandler(InstallResponseFilter); 
} 

public void Dispose() 
{ 
} 

private void InstallResponseFilter(object sender, EventArgs e) 
{ 
    HttpResponse response = HttpContext.Current.Response; 

    if (response.ContentType == "text/html") 
    { 
     response.Filter = new MyFilter(response.Filter); 
    }   
} 

任何想法? 謝謝

回答

1

大概你的ajax響應與內容類型「text/html」一起出去?您是否嘗試過調試以確認是否屬於這種情況?

如果是這樣,你可以將它們切換到其他的「application/json」或「text/xml」,看看它是否有效。這取決於應用程序對內容類型屬性的其他用途。

如果你的ajax響應沒有使用這種內容類型,那麼它會出現這個模塊不會導致問題。再次,您應該進行調試以確認發生了什麼。

你也可以嘗試給你的InstallResponseFilter方法添加更多的條件,例如jquery的所有ajax請求都有一個特定的頭文件(x-requested-with)我想,其他框架可能也是如此。如果您可以識別您的ajax請求的常見簽名,則可以過濾出響應過濾器。

+0

謝謝詹姆斯。我目前正在嘗試的是確保使用ScriptManager實際加載在頁面上的相同HttpModule:http://www.codeguru.com/csharp/.net/net_asp/tutorials/article.php/c12927/使用-control-adapters-to-automatic-attach-AJAX-Extenders-to-ASPNET-Controls.htm。我會讓你知道它是否工作。 – Fox 2011-02-08 12:05:46

相關問題