【发布时间】:2020-05-24 20:34:55
【问题描述】:
问题是每次我尝试链接多对多关系的相关表时,都会出现堆栈溢出和访问冲突异常。
这是我在调试控制台中收到的内容:
信息:Microsoft.Hosting.Lifetime[0] 现在收听:https://localhost:5001
信息:Microsoft.Hosting.Lifetime[0] 现在收听:http://localhost:5000
信息:Microsoft.Hosting.Lifetime[0] 申请开始。按 Ctrl+C 关闭。
信息:Microsoft.Hosting.Lifetime[0]
托管环境:开发
信息:Microsoft.Hosting.Lifetime[0] 内容根路径: C:\Users\vynar\source\repos\IndividualProjects\E_Library\API
堆栈溢出。
C:\Users\vynar\source\repos\IndividualProjects\E_Library\API\bin\Debug\netcoreapp3.1\ELibrary.API.exe(进程 14384)退出,代码为 -1073741819。
在 VS 输出窗口中(只有一部分):
Microsoft.Hosting.Lifetime:信息:内容根路径:> C:\Users\vynar\source\repos\IndividualProjects\E_Library\API 'ELibrary.API.exe'(CoreCLR: clrhost):已加载 'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1\System.Net.Security.dll'。
抛出异常:System.Net.Se``curity.dll 中的“System.IO.IOException”
抛出异常:System.Net.Security.dll 中的“System.IO.IOException”
抛出异常:System.Net.Security.dll 中的“System.IO.IOException”
抛出异常:System.Private.CoreLib.dll 中的“System.IO.IOException”
“ELibrary.API.exe”(CoreCLR:clrhost):加载“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1\System.Net.Http.dll”。
'ELibrary.API.exe' (CoreCLR: clrhost): 加载'C:\Users\vynar\source\repos\IndividualProjects\E_Library\API\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.Protocols.dll '。
'ELibrary.API.exe' (CoreCLR: clrhost): 加载'C:\Users\vynar\source\repos\IndividualProjects\E_Library\API\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.Protocols.OpenIdConnect .dll'。
“ELibrary.API.exe”(CoreCLR:clrhost):加载“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1\System.Net.WebSockets.dll”。
抛出异常:System.Net.Security.dll 中的“System.IO.IOException”
抛出异常:System.Private.CoreLib.dll 中的“System.IO.IOException”
抛出异常:System.Private.CoreLib.dll 中的“System.IO.IOException”
'ELibrary.API.exe' (CoreCLR: clrhost): 加载'C:\Users\vynar\source\repos\IndividualProjects\E_Library\API\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.JsonWebTokens.dll '。
'ELibrary.API.exe'(CoreCLR: clrhost):已加载'C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1\System.Runtime.Numerics.dll'。
“ELibrary.API.exe”(CoreCLR:clrhost):已加载“C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.1\System.Runtime.Serialization.Primitives.dll”。
“ELibrary.API.exe”(CoreCLR:clrhost):已加载“C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.1\Microsoft.AspNetCore.WebUtilities.dll”。
'ELibrary.API.exe' (CoreCLR: clrhost): 加载'C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.1\Microsoft.AspNetCore.Http.Extensions.dll'。
程序“[14384] ELibrary.API.exe”已退出,代码为 -1073741819 (0xc0000005)“访问冲突”。
可能导致崩溃的代码:
控制器:
[Authorize(Roles = "Admin, Manager")]
[HttpPost("attach")]
public async Task<IActionResult> Attach([FromBody] AuthorBookModel authorBook)
{
var createdLink = await _service.Attach(authorBook.BookId, authorBook.AuthorId);
if (createdLink == null)
{
return BadRequest(authorBook);
}
return CreatedAtAction(nameof(GetAllBooks), createdLink);
}
服务
public async Task<AuthorBook> Attach(int bookId, int authorId)
{
var book = await _unitOfWork.Books.GetByIdAsync(bookId);
var author = await _unitOfWork.Authors.GetByIdAsync(authorId);
if (book == null && author == null)
{
return null;
}
var authorBook = new AuthorBook() { AuthorId = author.Id, BookId = book.Id };
book.AuthorBooks.Add(authorBook);
author.AuthorBooks.Add(authorBook);
await _unitOfWork.CommitAsync();
return authorBook;
}
另外值得一提的是,代码有效,数据插入
【问题讨论】:
-
这毫无意义。没有可见的递归,stackoverflow 需要递归。请提供更多信息 - 至少是堆栈跟踪。乍一看,错误不在您显示的代码中。没有递归就不能拥有stackoverflow。还要删除多余的标签。这个问题与 sql-server 无关(stackoverflow 不在服务器上),并且这里的 web 相关性为零。甚至 asp.net-core 也无关紧要,因为您的代码中没有代码行,也没有 asp.net core 的元素。
-
这里有一个潜在的空引用异常,但没有访问冲突。
标签: c# .net asp.net-core