好的,這是一個剛剛開發的非常奇怪的問題,對我而言,我不知道從哪裏開始。非託管代碼中的ASP Net Core 1.1和EF 6異常?
出於某種原因,我在EF 6的某處發生了一個致命錯誤,但是這隻發生在我轉換爲.NET Core 1.1之後。此應用程序沒有問題,運行在ASP.Net MVC 4
的搜索引擎:
託管調試助手 'FatalExecutionEngineError':「運行時遇到一個致命錯誤。錯誤的地址是0x77c81a09,線程0x2520。錯誤代碼是0xc0000005。此錯誤可能是CLR中的錯誤,也可能是用戶代碼中不安全或不可驗證的部分。這個bug的常見來源包括COM-interop或PInvoke的用戶編組錯誤,這可能會破壞堆棧。 ```
從我可以在網上找到,這是一個問題外 .NET的託管環境....這意味着,我只是害羞毫無章法的。
我第一次碰到這個錯誤時,一個簡單的Clean和Build修復了一會兒,然後它在同一個地方再次出現。
我已經看到了迄今爲止兩處此錯誤:
var vm = new ManagerLogIndexViewModel()
{
Locations = await _db.Locations.ToListAsync(),
};
而且(儘管較爲複雜):
var results = await _db.InvolvedPersons
.Where(
x =>
x.LastName.ToUpper().Contains(q) || x.FirstName.ToUpper().Contains(q) ||
(x.FirstName + " " + x.LastName).ToUpper().Contains(q))
.Select(x => new {x.FirstName, x.LastName, x.Id})
.GroupBy(x => x.LastName + " " + x.LastName)
.Select(x => x.FirstOrDefault())
.ToDictionaryAsync(x => x.FirstName + " " + x.LastName, x => x.Id.ToString());
難道有事情做與async
?
還有其他實體框架調用,即使使用異步運算符,一切正常。
即使是第一個例子,也是在Clean和Build之後工作的。
我真的不知所措。我讀過它可能與環境有關。目前,我沒有其他環境可以測試,只是我的開發機器。如果我在另一臺機器上運行,我將嘗試稍後更新。
如果我通過代碼(第一個例子)步驟,一切都會按計劃:
我剛剛發佈之前做了另一個實驗。
停止。刪除斷點。開始。崩潰。
這讓我感動了一堵牆。
更新
彷彿這無法得到太多的陌生人,這個錯誤不會發生我每次啓動時間。
我會說它的大約60/40有利於崩潰。當它運行時(並且第一個查詢經過),我對該進程的整個生命週期沒有任何問題。
另一個更新
看起來這是孤立的IIS下運行快車。如果我以獨立的方式運行應用程序,則無法產生崩潰。
一些更多的技術位:
- ASP.Net 1.1核心
- .NET 4.5.2
- 的Windows 7 SP1
- EF 6.1.3
關閉編輯
對於這個線程完整性的考慮(因爲有在這一點上幾個線程),由@格雷格 - miskelly(並提交給SO由@SwampyFox)確實工作所提供的解決方法。該錯誤已提交給MS,並且應該在未來的.NET Framework發行版中修復。
的討論發生在coreclr GitHub page
看起來好像你在.NET Core中發現了一個bug。爲什麼不嘗試找到導致此錯誤的「最小代碼」並向.NET Core團隊提出問題? –
我一直在遇到同樣的問題。正如你所說的,完整的清理/重建似乎可以解決它(通常)。但是,有時需要手動刪除受影響項目的「bin」和「obj」文件夾。 –
我一定會嘗試找到導致此問題的基本案例。 @BenWalters如果你有關於你的情況的任何信息,請分享。我今天被帶出辦公室,但聽到它不僅僅是我,我感到放心。 –