1

Webサイトに接続し、30分間アイドル状態を維持してから、エンティティにアクセスしようとすると、次のエラーが発生します。

エンティティフレームワークコマンド定義の実行中にエラーが発生しました。詳細については、内部例外を参照してください。内部例外{「無効なオブジェクト名'dbo.TableName'。」}

サンプルコード

Static Class Azure
{
 public static CrmEntities ConnectCustomerEntity()
    {
        CrmEntities customerEntity = null;
        policy.ExecuteAction(() =>
           {
               try
               {
                   var shardId = GetShardId();

                   customerEntity = new CrmEntities(ConnectionStringCustomerDB());
                   string federationCmdText = @"USE FEDERATION Customer_Federation(ShardId =" + shardId + ") WITH RESET, FILTERING=ON";

                   customerEntity.Connection.Open();                     
                   customerEntity.ExecuteStoreCommand(federationCmdText);   
               }
               catch (Exception e)
               {
                  customerEntity.Connection.Close();
                  SqlConnection.ClearAllPools();
                   //throw e;
               } 
           });
        return customerEntity;
    }

 public static CrmEntities DBConnect(CrmEntities _db)
    {
     try{
        if (_db == null)
            _db = Azure.ConnectCustomerEntity();
        if ((_db.Connection.State == ConnectionState.Broken) || (_db.Connection.State == ConnectionState.Closed))
        {               
            SqlConnection.ClearAllPools();
            _db = Azure.ConnectCustomerEntity();
        }
    else
        { //This code is to find out any issues in connection pool database connection
      string sqlCmdText = @"select top 1 Id from Project";
            _db.ExecuteStoreCommand(sqlCmdText);
        }
        }
  catch (Exception ex)
        {
            _db.Connection.Close();
            SqlConnection.ClearAllPools();
            _db = Azure.ConnectCustomerEntity();
        }
        return _db;
}

}

Mvcコントローラー。次のコードは、30分後にその例外を取得しています

 public class FilterController : Controller
{  
public ActionResult GetFilters(string entityName,string typeFilter)
    {
       _crmEntities=Azure.DBConnect(_db);
        var query = _db.FilterFields.Where(filter => filter.TableId == tableId).ToList();  // Here I am getting that exception
     }
}

わからない、なぜその例外が発生するのか。私はすべての可能性を試しました。何も役に立たなかった。私は本当にこれに打たれました。誰かが知っているなら、この例外から出てくるようにあなたの意見を教えてください

前もって感謝します。

4

1 に答える 1

0

あなたのセッションはタイムアウトしたと思います。

セッションタイムアウトを増やしてみてください:

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout.aspx

于 2013-02-21T20:34:16.693 に答える