WCF 静态变量被回收了,为什么? 5C

STHISTools.ParamUrlCode.Url = url
STHISTools.ParamUrlCode.Url闲置时间较长就被回收了,为什么?

    public class STHISTools
{
                public class ParamUrlCode
     {

                        private static string url = "";

          public static string Url
         {
              get
              {
                  return url;
              }

              set
              {
                  url = value;
             }
         }
        }

}

public class Servie : IService
{
private string Url = "";
//
/// 测试WCF链接是否建立成功
///
///
public bool TestLink(string url)
{
try
{
STHISTools.ParamUrlCode.Url = url;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(STHISTools.ParamUrlCode.Url);
myRequest.Method = "POST"; //设置提交方式可以为"get","head"等
myRequest.Timeout = 10000; //设置网页响应时间长度
myRequest.AllowAutoRedirect = false;//是否允许自动重定向
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
}
}
}

2个回答

静态内存的数据都会有回收机制 如果要长时间间隔使用可以考虑将地址存储到配置文件中使用

静态变量是全局性的,即使不被引用,也是根级节点的变量,其生存周期为应用程序的存在周期,故不会被正常的回收机制回收;
但是,部署在IIS的服务,其应用程序域可能因为某种异常,网站更新,以及回收选项的设置而触发回收操作,这个时候就会导致静态变量的回收
和重新初始化(与其说是回收的机制,不如说是相关进程的关闭和重新运行)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问