2008-12-02 66 views
2

由於您的建議,此問題已得到解決。查看底部的細節。非常感謝您的幫助!ASP.NET應用程序通過防火牆展現出奇怪的行爲

我們的ASP.NET網站是從幾個特定和高度安全的國際位置訪問的。它運行良好,但我們增加了另一個顯示非常奇怪行爲的客戶位置。

特別是,當用戶輸入搜索條件並單擊搜索按鈕時,結果列表將返回空白。它甚至不顯示'0 results returned'文本,所以就好像Repeater控件完全沒有綁定。類似的行爲出現在網站的其他部分,但不是全部。用戶可以正常登錄該網站並顯示其個人資料信息。

我已經使用與他們完全相同的憑據在本地登錄到該站點,並且該站點從此處運行良好。我們仔細地經歷了這些步驟,因此我確信它不是用戶問題。

第一次加載搜索結果頁面時,我將搜索結果綁定在搜索結果頁的Page_Load中(條件在查詢字符串中)。即

if (!IsPostBack) { 
    BindResults(); 
} 

我可以準確地局部地通過註釋掉BindResults()方法調用複製相同的行爲。

有人知道IsPostBack的價值是如何計算的嗎?是否有可能他們高度安全的防火牆設置會導致IsPostBack始終返回true,即使它是來自其他頁面的重定向?這可能是一個紅鯡魚,因爲問題可能在其他地方。它確實複製了結​​果。

我無法訪問該網站,因此故障排除僅限於向他們提供說明並要求他們告訴我結果。

謝謝你的時間!

附加信息:客戶端位於運行默認規則的Microsoft ISA 2006防火牆後面。該網站已添加到Internet Explorer受信任網站列表中,並在FireFox和Google Chrome中嘗試使用,結果均相同。

解決方案:我的贏家是建議使用提琴手。沒有Web開發人員應該沒有什麼優秀的工具。使用這個,我能夠從請求中剝離各種頭文件,直到我再現問題。實際上有兩個因素導致了這個錯誤,這種混淆的問題通常就是這種情況。

第一因素 - 在可能的情況下,Web應用程序使用GZIP壓縮,並受到所有主流瀏覽器的支持。防火牆剝離了指定GZIP解壓縮支持的頭(Accept-Encoding:gzip,deflate)。

第二因素 - 我的代碼中的一個錯誤意味着某些處理在未壓縮內容發送時被繞過。之前沒有注意到這個問題,因爲該應用程序僅供有限的受衆使用,所有這些都支持GZIP解壓縮。

回答

3

如果他們在技術上精通,我會讓他們下載Fiddler或類似的東西,捕獲整個HTTP會話,然後發送給您保存的會話。也許在那裏的東西會伸出。

同時,請參閱是否可以安裝ISA Server(如果必須,可以安裝評估版,如果您擁有或認識任何具有子版的人,請參閱MSDN),然後查看是否可以在本地複製它。

1

客戶端是否有可能禁用了Javascript並且它沒有提取_EVENTTARGET表單值?

+0

感謝您的建議。我試過使用JavaScript關閉的網站,它工作正常(至少該網站的部分是)。他們還將域添加到他們的Internet Explorer可信站點列表中,並嘗試使用Firefox和Chrome,所以應該啓用Javascript。 – Andrew 2008-12-02 03:53:11

1

它可能是某種代理,它會從給定的POST請求中創建一個GET請求...

我不知道的IsPostBack是如何計算的,但我的猜測是,它會檢查HTTP請求,看它是否是一個POST或GET ...

1

喔,是的。這絕對不是「_EVENTTARGET」順便說一句...

我知道這是由於Ra-Ajax沒有通過任何這些參數的服務器和他們(RA-Ajax請求)被加工成的IsPostBack請求......

1

您可以創建一個測試Post Page,它傳遞與您的搜索頁面相同的內容,並在Page_Load中回寫所有帖子以確保它們正在通過,特別是__VIEWSTATE。

foreach (string key in Request.Form) 
{ 
    Response.Write("<br>" + key + "=" + Request.Form[key]); 
} 

然後讓其中一個用戶轉回他們在該測試頁上看到的內容。

編輯:有文件,有些防火牆會破壞VIEWSTATE和一些方法來解決它:View State Overview

1

位置,位置,位置。檢查用戶的文化。通常會導致問題。

1

檢查IIS日誌以查看請求是否將其發送到您的服務器。 ISA安裝程序可能會緩存初始請求並在後續請求中提供服務。

相關問題