0

我正在VS2012与win2k8 r2 64位更新1。实体框架连接字符串丢失后的Visual Studio 2012 stackoverflow

在一个简单的类库应用我做的添加>新建项目> ADO.NET实体数据模型

我选择在网络上的SQL Server的数据库,选择并添加一个表。表被添加,我可以在我的代码中作为类名访问它。

问题:当我对后端数据库执行任何操作时,使用我的库的应用程序崩溃时出现stackoverflow错误(没有例外)。例如,这会崩溃:var logs =_db_context.LOGs.ToList();

任何想法?

编辑:相同的项目在同一台机器上在VS2010中工作。这只在升级到升级实体框架的VS2012时才会发生。另外值得一提的是,如果我删除代码访问数据库,应用程序运行得很好。 另外,删除和重新添加.edmx不会有帮助,也不会清理/重新构建或重新启动VS.

EDIT2:调试后,我已经注意到在达到行LogServerEntities context = new LogServerEntities()的时候,我尝试从“当地人”扩大上下文变量VS结束调试说Managed (v4.0.30319)' has exited with code -2146233082 (0x80131506).

回答

0

类库实际上是一个自定义跟踪听众,看起来像下面。当我在构造函数中对FirstChanceHandler进行注释时,异常实际上进入了控制台输出:程序集引用(System.Management.Automation)未能加载。我真的不需要那个程序集,只是简单地删除它,并且stackoverflow错误(我猜测它是一个错误)消失了。

public Listener() 
    { 
     AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler; 
    } 

    public void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e) 
    { 
     WriteException(e.Exception); 
    } 

    public void WriteException(Exception e) 
    { 
     string app_identity = System.Reflection.Assembly.GetExecutingAssembly().ManifestModule.Name; 
     string server_name = System.Environment.MachineName; 

     using (LogServerEntities context = new LogServerEntities()) 
     { 
      LOG log = new LOG(); 
      log.DATE = DateTime.Now; 
      log.THREAD = Thread.CurrentThread.Name; 
      log.MESSAGE = e.Message; 
      log.LOGGER = string.Format("{0} {1}", app_identity, server_name); 
      log.LEVEL = Level.Exception.ToString(); 
      log.EXCEPTION = e.GetType().FullName; 

      var web_exception = e as WebException; 
      if (web_exception != null) 
      { 
       if (web_exception.Status == WebExceptionStatus.ProtocolError) 
       { 
        var response = web_exception.Response as HttpWebResponse; 
        if (response != null) 
         log.HTTP_RESPONSE_CODE = ((int)response.StatusCode).ToString(); 
        else 
         log.HTTP_STATUS = web_exception.Status.ToString(); 
       } 
       else 
       { 
        log.HTTP_STATUS = web_exception.Status.ToString(); 
       } 
      } 

      context.LOGs.Add(log); 
      context.SaveChanges(); 
     } 
    } 
相关问题