最近我们转换一个网站,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