6

Das Problem tritt auf, wenn erste Migrationen von EF 6.1.2-Code in einer Azure-Webrolle (WS 2012 R2) ausgeführt werden. Die gleichen Migrationen laufen lokal gut, auch wenn ich die Verbindungszeichenfolge auf die (Azure) Sql-Datenbank zeige.Die erste Migration von EF-Code löst StackOverflowException in der Azure-Webrolle aus

Die StackOverflowException wird von Entity Framework-Code ausgelöst, und die erste Zeile von einer meiner Migrationen wird nicht einmal getroffen.

Ich habe versucht, die Migration auf drei verschiedene Arten ausgeführt werden:

DbMigrator migrator = new DbMigrator(configuration); 
migrator.Update(); // Here the exception is thrown 

Sekunde:

DbMigrator migrator = new DbMigrator(configuration); 
pendingMigrations = migrator.GetPendingMigrations().ToList(); 
foreach (string pendingMigration in pendingMigrations) 
{ 
    migrator.Update(pendingMigration); // Here the exception is thrown 
} 

und mit web.config:

<contexts> 
     <context type="Superb.WorkNextDoor.EFRepository.Context.WndDbContext, Superb.WorkNextDoor.EFRepository, Version=1.0.0.0, Culture=neutral"> 
     <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[Superb.WorkNextDoor.EFRepository.Context.WndDbContext, Superb.WorkNextDoor.EFRepository], [Superb.WorkNextDoor.EFRepository.Migrations.Migrations.WndDbMigrationsConfiguration, Superb.WorkNextDoor.EFRepository.Migrations]], EntityFramework"> 
     </databaseInitializer> 
     </context> 
    </contexts> 

Ich sehe die Stackoverflow in Visual Studio, wenn ich die Webrolle remote debugge. Ein Fehler wird im Windows-Ereignisprotokoll der Web-Rolle aufgezeichnet (Log-Info am Ende dieses Beitrags).

Ich habe zwei Migrationen. Ich habe versucht, die erste von PMC und die zweite von der Web-Rolle, aber kein Glück zu laufen.

Ich habe versucht, .Net 4.5.2 auf dem Server zu installieren, die VM-Größe von XS auf S zu ändern und EF auf Version 6.1.1 herabzustufen. Nichts hat geklappt. Außerdem habe ich versucht, den Ordner "E: \ sites \ 0" von der Webrolle auf meinen lokalen Computer herunterzuladen, die App auf IIS installiert und meinen VS Debugger angehängt, und diese Ausnahme wird nicht ausgelöst. Zwischen Windows 8.1 und Windows Server 2012 R2 muss etwas anders sein.

Ich habe viel Zeit damit verbracht, verschiedene Dinge auszuprobieren, aber ich möchte das nicht aufgeben und muss meine Migrationen von der Paketmanager-Konsole ausführen.

Log Name: Application Source: Application Error Date:
1/11/2015 3:21:42 AM Event ID: 1000 Task Category: (100) Level:
Error Keywords: Classic User: N/A Computer:
RD0003FF508F5B Description: Faulting application name: w3wp.exe, version: 8.5.9600.16384, time stamp: 0x5215df96 Faulting module name: clr.dll, version: 4.0.30319.34014, time stamp: 0x52e0b86c Exception code: 0xc00000fd Fault offset: 0x0000000000195499 Faulting process id: 0xc60 Faulting application start time: 0x01d02d4d77fdfb93 Faulting application path: d:\windows\system32\inetsrv\w3wp.exe Faulting module path: D:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Report Id: f5e4d6dc-9940-11e4-80bd-0003ff508f5b Faulting package full name: Faulting package-relative application ID: Event Xml:
1000 2 100 0x80000000000000 467 Application RD0003FF508F5B w3wp.exe 8.5.9600.16384 5215df96 clr.dll 4.0.30319.34014 52e0b86c c00000fd 0000000000195499 c60 01d02d4d77fdfb93 d:\windows\system32\inetsrv\w3wp.exe D:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll f5e4d6dc-9940-11e4-80bd-0003ff508f5b

Einfache Schritte, um diesen Fehler zu reproduzieren:

  1. Download dieses Beispielprojekt: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application
  2. hinzufügen CloudServiceProject zu der Lösung und fügen Sie das Web-Projekt als Web-Rolle
  3. es veröffentlichen zu azurblau
  4. Durchsuchen Sie die Website und gehen Sie zum Studenten Registerkarte (dies trifft die Datenbank und der Initializer versucht, die Migrationen auszuführen).
  5. passiert das gleiche.
+0

Tonnen von Forschungsaufwand, viele relevante Informationen, sogar eine Möglichkeit, das Problem vollständig zu reproduzieren. Nur ein upvote (meins). Verrückte Welt ... –

+1

@GertArnold Ja:/seltsam, dass niemand zuvor auf dieses Problem gestoßen ist. Ich hatte es auf Codeplex gemeldet und es wurde für die Untersuchung zugewiesen: [https://entityframework.codeplex.com/workitem/2637](https://entityframework.codeplex.com/workitem/2637) –

+0

Möglicherweise verwandt: [Azure Cloud Der Dienst, der das Webrollenspeicherproblem (Webanwendung) ausführt (Gen2)] (http://stackoverflow.com/q/28022553/861716) –

Antwort

2

Dies wird als Fehler in Microsoft Visual Studio 2013 Update 4 identifiziert. Als vorübergehende Umgehung deaktivieren Sie "Lazy Initialization" unter IntelliTrace Einstellungen -> IntelliTrace Events. Wir untersuchen die Behebung dieses Fehlers in einem zukünftigen Update für Visual Studio 2013.

+0

Danke Rajkumar! Freut mich, eine Antwort vom IntelliTrace-Team zu erhalten. Ich habe Ihre Problemumgehung getestet und es funktioniert großartig. –

1

Die Verantwortlichen für die StackOverflowException entpuppten sich als IntelliTrace. Ich weiß nicht, die Ursache des Problems zwischen IntelliTrace und Code-Erste Migrationen, die dieses Verhalten verursachen, aber wenn ich die IntelliTrace Protokolle heruntergeladen konnte ich eine Menge Sql Ausnahmen siehe:

IntelliTrace Summary 2/18/15

Ich habe schon verloren viel Zeit damit, also werde ich es nicht weiter untersuchen. Die einfachste Abhilfe für mich jetzt nur IntelliTrace deaktivieren, bevor meine Web Rollen bereitstellen:

Disable IntelliTrace

Wenn jemand neugierig ist, sind hier die IntelliTrace logs.

Ich hoffe, dass dies jemand anderen hilft, ein solches Problem zu lösen, ohne so viel Zeit wie ich zu verlieren.

Verwandte Themen