2016-05-16 22 views
-1

我剛剛更新了IIS服務器上的Web應用程序,但更新後,我的用戶正在收到不正確的輸入格式錯誤。這個錯誤是因爲代碼試圖將用戶的字符串輸入轉換爲double,如果用戶傳入類似55.5D的東西,這顯然不起作用。爲什麼我的IIS服務器接收到來自客戶端的錯誤輸入?

除了不良的編碼習慣,我還是要解決,這不是真正的問題。問題在於用戶發送了正確的值(我自己看過並輸入了完全相同的值),但程序仍在拋出此錯誤。我恢復到以前的版本,錯誤消失。自從以前的版本以來,我沒有更改過這段代碼。有人知道這裏發生了什麼?我無法在開發服務器上重複這個問題,也不會故意輸入錯誤的輸入。

編輯:我已經嘗試清除更新後的用戶和服務器的緩存,但仍然收到相同的錯誤,即使我把檢查區域打破(我錯過了代碼中的其他地方)。但是,當只有少數用戶同時使用它時,它運行得非常好,但是當許多用戶使用它時,它已經崩潰了。當許多用戶訪問該網站時,ASP.NET控件是否有問題?

+0

可能是它保留在舊的DLLS上,你需要做一個應用程序池重置 – KSib

+0

@KSib我對IIS比較陌生。這是一個預編譯的網站,我用新的網站替換它的所有文件。重置應用程序池是否清除服務器端緩存或什麼? – Crobota

+0

它所做的一件事是回收內存中的內容,所以如果你有一些東西仍然存在,它應該釋放它。如果您注意到這是一個問題,那麼在每次部署後,我總是會回收應用程序池。 – KSib

回答

0

IIS中的完全託管組件不需要應用程序池重新啓動以應用更改。相反,即使只有web.config發生變化,它也會重新加載並再次進行JIT操作。如果您有疑問,您可以隨時通過在應用程序中包含帶有可見區分標記的測試頁進行測試。

最有可能的原因是你的情況是緩存。客戶端更可能是罪魁禍首。您是否監控過http代碼,以驗證請求是否真正觸及您的服務器並獲取「活動」結果(HTTP 200)? 服務器端進程內高速緩存應自動重置,但如果您在進程外某處持續存在,則可能會在應用程序升級後將其提取出來。

當然,要確認您確實在測試那些你認爲你正在測試的dll。如果事情沒有意義,那麼驗證更廣泛的假設可能會有所幫助。

相關問題