最近我們轉換一個網站,Web應用程序。我們部署時一切正常。如果我們允許應用程序關閉(即沒有人使用它1小時),那麼當我們回到它時,Login頁面加載正常,但是然後調用Web服務(舊的SOAP服務)失敗。這不會在開發環境中重現,只能在我們的服務器上重現。ASPNET Web應用程序 - 有些值是零上喚醒
在我們追蹤了一些問題的情況下,似乎一個或多個字符串在使用前未被初始化,導致空字符串或空字符串吹起來。
真正讓我們痛心的一件事是Log4Net日誌記錄完全停止;所以追蹤問題需要大量的代碼。
任何想法的根本原因(希望修復)
======== UPDATE =========
問題的一個追查一個有趣的局面......
失敗產生的服務電話「必須至少指定客戶端屬性」。這是由該
profile.Client = ApplicationName;
public static string ApplicationName
{
get
{
return string.Format(CLIENTNAME, Resources.AppVersion.Version);
}
}
其中要求設置:
internal static string Version
{
get
{
return ResourceManager.GetString("Version", resourceCulture);
}
}
從概念上講,如果它的工作,一旦它應該永遠不會失敗。
的另一個問題是log4net的不工作時,Web應用程序重新加載,在這裏我們也遇到了靜態
private static readonly ILog ExceptionLog = LogManager.GetLogger("ExceptionLogger");
private static readonly ILog SoaLog = LogManager.GetLogger("soaPerfLogger");
private static readonly ILog InfoLog = LogManager.GetLogger("InfoLogger");
private static readonly ILog DebugLog = LogManager.GetLogger("DebugLogger");
原因表面上看來似乎是靜態變量歸零的Web應用程序的重新啓動。他們沒有被重新初始化。
等待輝煌的建議!否則,我將通過代碼中的所有852靜態用法猛擊,以添加代碼來解決這種不尋常的行爲。
想法(?):用Singleton模式封裝ILog。 – granadaCoder
你如何關閉你的web應用程序iisreset/stop? 你重置/回收應用程序池? – Anand