Исключение при запросе базы данных SQL Azure из рабочей роли Azure.

У меня есть рабочая роль Azure, которая должна запрашивать базу данных SQL на основе Azure для элементов, которые необходимо обновить, выполняет расчет и сохраняет результат. Довольно простая штука, и у меня не было проблем с ее работой в Azure Compute Emulator на моем локальном компьютере, как с LocalDb, так и с производственной базой данных на основе Azure.

Однако при работе в облаке я получаю следующее исключение, и я понятия не имею, что его вызывает:

Приложение: WaWorkerHost.exe

Версия фреймворка: v4.0.30319

Описание: The process was terminated due to an unhandled exception.

Информация об исключении: System.Data.DataException

Куча:

   at System.Data.Entity.Internal.RetryAction`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].PerformAction(System.__Canon)
   at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(System.Action`1<System.Data.Entity.Internal.InternalContext>)
   at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(System.Type)
   at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Initialize()
   at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_InternalContext()
   at System.Data.Entity.Infrastructure.DbQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].System.Linq.IQueryable.get_Provider()
   at System.Linq.Queryable.Where[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.IQueryable`1<System.__Canon>, System.Linq.Expressions.Expression`1<System.Func`2<System.__Canon,Boolean>>)
   at Workzerk.Worker.Events.EventsWorkerRole.Run()
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal()
   at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.<StartRole>b__2()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ThreadHelper.ThreadStart()

Этот фрагмент кода работает нормально (в методе OnStart):

string connectionString = RoleEnvironment.GetConfigurationSettingValue("SampleDbConnectionString");
Trace.TraceInformation("The connection string for the database is: " + connectionString);
_db = new SampleDbContext(connectionString);

Правильная строка подключения выводится в журналы.

К сожалению, следующий код вызывает исключение (этот код в методе Run):

Event[] events = _db.Events.Where(x => x.NextOccurence != null).ToArray();

Событие — это один из наших объектов предметной области.

Кто-нибудь знает, что вызывает это исключение, или как мне лучше всего выяснить это?


person Jack Scott    schedule 14.04.2014    source источник


Ответы (1)


Описание исключения, которое вы получаете, неясно. Попробуйте обернуть свой фрагмент кода в блок try/catch и зарегистрировать детали исключения в Trace. Убедитесь, что вы также регистрируете детали InnerException(s).

person Vadim K.    schedule 14.04.2014