Windows服务怎么会调用HttpContext.Current.Server.MapPath呢。

解决方案 »

  1.   

    如果你觉得这类“类型初始值设定项引发异常”非常恶心(我一直觉得vs调试环境中最大的瑕疵就在于这个,看来只有等微软把vs版本升级到30版才能解决这个调试问题了),你完全可以把所有的内容都挪出类型初始化方法,而放到其它普通的方法里。由于对象其它方法运行时对于对象初始化的需求、不过都是要获取之前设置的变量值,那么你可以把许多变量变为“延迟初始化”的。例如对于 DbConnetion,可以这样写private DbConnection _conn;private DbConnection Conn
    {
        get
        {
            if(_conn == null)
            {
                _conn = .........创建 connection 对象
            }
            return _conn;
        }
    }而不需要在对象初始化方法中去创建 connection 对象。这样做的目的是,vs调试器可以给出具体而正确的异常报告,并且支持你在vs调试器上即时调试程序,而不会报告一个垃圾地消息“类型初始值设定项引发异常”。
      

  2.   

    许多时候,灵活改为使用更为正确的开发方法,要比你凑巧拼凑出暂时的一两个结果更重要。
    是这样的。如果vs正常调试器抛出异常,它一定会在 Current.Server 这里告诉你“未将对象应用为对象的实例”之类的明确的异常报告。而你的这种写法,vs的调试器就搞不定了。