2011-04-11 83 views
1

對於呈現驗證碼圖像的ASHX處理程序,我有一個非常棘手的問題。這讓人感到非常煩惱的是,兩個月前它運行良好,當我今天再次回到它時,它已停止工作。ASHX呈現爲破碎的圖像

我得到的是每隔一段時間就會在一個驗證碼中引發的頁面。這是一個挑戰的例子標記:

<img class="challengedtl" src="Challenge.ashx?tkn=0057ea27-4d35-4850-9c6f-7a6fdc9818e2"/> 

的GUID引用在包含驗證碼的實際內容,以及驗證碼挑戰的狀態的SQL表,即一條記錄就被處理如果是這樣,用戶得到它的權利等

在找到此標記的頁面上,圖像顯示爲一個損壞的JPEG。當我在ASHX ProcessRequest()方法中刪除一個斷點時,我可以看到ASHX永遠不會被調用。

當我將URL從源屬性中取出並直接從瀏覽器的地址欄運行它時,我在ProcessRequest中打開了中斷點,捕獲的圖像呈現得很好。

我不相信我的ASHX代碼是問題,因爲它在我直接調用它時起作用。問題似乎是爲什麼ASHX沒有被主頁面調用。鑑於這是在2月份工作,我無法解釋正在發生的事情。

我知道自那時起我的機器發生了一些事情。我懷疑Windows Update或某個服務包的東西。原因是我的驗證碼處理包括跟蹤調用者的IP地址。回到工作狀態時,我的本地主機被註冊爲127.0.0.1(IPv4),但現在它被註冊爲:: 1(IPv6)。可能是紅鯡魚。

有誰知道可能是什麼原因造成的,或者您對如何解決此問題有任何建議嗎?

+0

如果您查看瀏覽器中頁面的源代碼(即實際呈現的HTML),它看起來像什麼?什麼是「src」屬性值? – 2011-04-11 14:03:21

+0

處理程序與包含您在上面發佈的html的頁面位於同一文件夾中嗎? – Andrew 2011-04-11 14:04:40

+0

解決方案是將ashx移動到主頁的文件夾中。對於後人來說,Jon Skeet的問題的答案是,上面問題中顯示的src屬性直接從呈現的HTML中剪切,因此src屬性如圖所示。 – 2011-04-11 14:19:35

回答

2

處理程序與包含上面發佈的html的頁面處於同一文件夾中嗎?

+0

處理程序不在同一個文件夾中。它位於網站的根文件夾中,但將其移動到解決託管頁面的同一文件夾中。問題。我仍然有點困惑,爲什麼這用於工作和停止工作。無論如何,我很感謝解決方案! – 2011-04-11 14:15:55

2

這裏有兩個關鍵部分:

當我滴在ASHX的ProcessRequest()方法中設置斷點,我可以看到ASHX永遠不會被調用。

SRC = 「Challenge.ashx?TKN = 0057ea27-4d35-4850-9c6f-7a6fdc9818e2」

把那些在一起,我們可以推測,路徑在你的src屬性中是錯誤的。

這只是一個圖像標籤。如果html加載它發送該資源的請求。由於您的斷點沒有被觸及,這隻能意味着您要麼測試某個允許斷點的地方,要麼將請求發送到錯誤的地方。

它可能就像發送請求到網站的生產版本一樣簡單,使用錯誤的模式(即:https vs http)或在某處丟失文件夾或端口號。瀏覽器應該能夠給你資源的整個路徑 - 確保它符合你的期望。

+0

自從他第一次參加安迪以來,我給了安迪一個選中標記,但是對你做出了全面,快速,準確的迴應!謝謝Joel。 – 2011-04-11 14:17:32