6

Sự cố xảy ra khi thực thi mã EF 6.1.2 di chuyển đầu tiên trong vai trò web Azure (WS 2012 R2). Các di chuyển tương tự chạy tốt tại địa phương, ngay cả khi tôi trỏ chuỗi kết nối đến cơ sở dữ liệu Sql (Azure).Mã EF Di chuyển đầu tiên ném StackOverflowException trên Azure Web Role

StackOverflowException được ném bởi mã khung Entity, và dòng đầu tiên của bất kỳ di chuyển nào của tôi thậm chí không bị trúng.

Tôi đã cố gắng chạy di cư theo ba cách khác nhau:

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

thứ hai:

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

và sử dụng 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> 

tôi thấy StackOverflowException trong Visual Studio khi tôi đang gỡ lỗi từ xa vai trò web. Lỗi được ghi lại trong nhật ký sự kiện của vai trò web (thông tin nhật ký ở cuối bài đăng này).

Tôi có hai lần di chuyển. Tôi đã thử chạy cái đầu tiên từ PMC và thứ hai từ vai trò web nhưng không may mắn.

Tôi đã thử cài đặt .Net 4.5.2 trên máy chủ, thay đổi kích thước máy ảo từ XS thành S và hạ cấp EF xuống phiên bản 6.1.1. Không có gì hiệu quả. Ngoài ra, tôi đã thử tải xuống thư mục "E: \ sites \ 0" từ vai trò web đến máy tính cục bộ của tôi, cài đặt ứng dụng trên IIS và đính kèm VS Debugger của tôi và nó không ném ngoại lệ đó. Đã có một cái gì đó khác nhau giữa Windows 8.1 của tôi và Windows Server 2012 R2.

Tôi đã dành rất nhiều thời gian để thử những thứ khác nhau nhưng tôi không muốn từ bỏ việc này và phải thực hiện di chuyển của mình từ bảng điều khiển trình quản lý gói.

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

bước dễ dàng để tái tạo lỗi này:

  1. Tải dự án mẫu này: 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. Thêm một CloudServiceProject vào dung dịch và thêm các dự án web như một vai trò web
  3. Publish nó để azure
  4. Duyệt trang web và chuyển đến tab sinh viên (thao tác này truy cập cơ sở dữ liệu và trình khởi tạo cố gắng thực hiện di chuyển).
  5. Xảy ra giống nhau.
+0

Tấn nỗ lực nghiên cứu, nhiều thông tin có liên quan, thậm chí là cách để tái tạo hoàn toàn vấn đề. Chỉ có một upvote (tôi). Crazy world ... –

+1

@GertArnold Có:/kỳ lạ là không ai gặp vấn đề này trước đây. Tôi đã báo cáo nó trên codeplex và nó đã được chỉ định để điều tra: [https://entityframework.codeplex.com/workitem/2637](https://entityframework.codeplex.com/workitem/2637) –

+0

Có thể có liên quan: [Azure Cloud Dịch vụ đang chạy vấn đề bộ nhớ Web Vai trò (ứng dụng web) (Gen2)] (http://stackoverflow.com/q/28022553/861716) –

Trả lời

2

Điều này được xác định là lỗi trong Bản cập nhật Microsoft Visual Studio 2013 4. Là một công việc tạm thời xung quanh tắt "Khởi tạo lười biếng" trong Cài đặt IntelliTrace -> Sự kiện IntelliTrace. Chúng tôi đang điều tra sửa lỗi này trong bản cập nhật trong tương lai cho Visual Studio 2013.

+0

Cảm ơn Rajkumar! Rất vui khi nhận được câu trả lời từ nhóm IntelliTrace. Tôi đã thử nghiệm cách giải quyết của bạn và nó hoạt động tốt. –

1

Chịu trách nhiệm về StackOverflowException được bật thành IntelliTrace. Tôi không biết nguyên nhân gốc rễ của vấn đề giữa IntelliTrace và Mã Đầu tiên Migrations gây hành vi này nhưng khi tôi tải các bản ghi IntelliTrace tôi có thể nhìn thấy rất nhiều Sql trường hợp ngoại lệ:

IntelliTrace Summary 2/18/15

Tôi đã mất rất nhiều thời gian với điều này vì vậy tôi sẽ không điều tra thêm nữa. Cách giải quyết đơn giản nhất đối với tôi bây giờ chỉ là vô hiệu hóa IntelliTrace trước khi triển khai Vai trò Web của tôi:

Disable IntelliTrace

Nếu ai đó là tò mò, đây là những IntelliTrace logs.

Tôi hy vọng điều này giúp người khác giải quyết vấn đề như vậy mà không mất nhiều thời gian như tôi đã làm.

Các vấn đề liên quan