Изключение при запитване към SQL Azure база данни от Azure Worker Role

Имам работна роля на Azure, която трябва да прави запитвания към базирана на Azure SQL база данни за елементи, които се нуждаят от актуализиране, извършва изчисление и запазва резултата. Доста прости неща и нямах проблеми да го накарам да работи в 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