Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 由于堆栈溢出和访问冲突异常,程序崩溃_C#_.net_Asp.net Core - Fatal编程技术网

C# 由于堆栈溢出和访问冲突异常,程序崩溃

C# 由于堆栈溢出和访问冲突异常,程序崩溃,c#,.net,asp.net-core,C#,.net,Asp.net Core,问题是,每次尝试链接多对多关系的相关表时,都会出现堆栈溢出和访问冲突异常 以下是我在调试控制台中收到的信息: 信息:Microsoft.Hosting.Lifetime[0] 现在收听: 信息:Microsoft.Hosting.Lifetime[0] 现在收听: 信息:Microsoft.Hosting.Lifetime[0] 应用程序已启动。按Ctrl+C组合键关闭 信息:Microsoft.Hosting.Lifetime[0] 托管环境:开发 信息:Microsoft.Hosting.L

问题是,每次尝试链接多对多关系的相关表时,都会出现堆栈溢出和访问冲突异常

以下是我在调试控制台中收到的信息:

信息:Microsoft.Hosting.Lifetime[0] 现在收听:

信息:Microsoft.Hosting.Lifetime[0] 现在收听:

信息:Microsoft.Hosting.Lifetime[0] 应用程序已启动。按Ctrl+C组合键关闭

信息:Microsoft.Hosting.Lifetime[0]

托管环境:开发

信息:Microsoft.Hosting.Lifetime[0] 内容根路径: C:\Users\vynar\source\repos\IndividualProjects\E\u Library\API

堆栈溢出

C:\Users\vynar\source\repos\IndividualProjects\E\u Library\API\bin\Debug\netcoreapp3.1\ELibrary.API.exe(进程14384)已退出,代码为-1073741819


在VS输出窗口中(仅部分窗口):

Microsoft.Hosting.Lifetime:信息:内容根路径:>C:\Users\vynar\source\repos\IndividualProjects\E\U 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\u Library\API\bin\Debug\netcoreapp3.1\Microsoft.IdentityModel.Protocols.dll'

'ELibrary.API.exe'(CoreCLR:clrhost):加载'C:\Users\vynar\source\repos\IndividualProjects\E\u 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\u 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);
    }
[Authorize(Roles=“Admin,Manager”)]
[HttpPost(“附件”)]
公共异步任务附加([FromBody]authorBook模型authorBook)
{
var createdLink=wait_service.Attach(authorBook.BookId,authorBook.authord);
if(createdLink==null)
{
返回错误请求(authorBook);
}
返回CreateDataAction(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;

    }
公共异步任务附加(int bookId,int authorId)
{
var book=await_unitOfWork.Books.GetByIdAsync(bookId);
var author=await_unitOfWork.Authors.GetByIdAsync(authorId);
if(book==null&&author==null)
{
返回null;
}
var authorBook=new authorBook(){authord=author.Id,BookId=book.Id};
book.AuthorBooks.Add(authorBook);
author.AuthorBooks.Add(authorBook);
wait_unitOfWork.CommitAsync();
返回authorBook;
}
值得一提的是,代码是有效的,数据是插入的

var authorBook = new AuthorBook() { AuthorId = author.Id, BookId = book.Id };

book.AuthorBooks.Add(authorBook);

author.AuthorBooks.Add(authorBook);
这是一种代码气味。为什么要触发在两个不同表中的每个导航属性上保存新的AuthorBook

在这些表中,您只需存储AuthorBookId,即使这样,也不需要这样做。在AuthorBooks表中,仅存储BookId和AuthorId。这样,您就赋予AuthorBooks表管理关系的职责,而不是在每个表中都这样做

试着改变我说的话,然后告诉我是否有错误

这是一种代码气味。为什么要触发在两个不同表中的每个导航属性上保存新的AuthorBook

在这些表中,您只需存储AuthorBookId,即使这样,也不需要这样做。在AuthorBooks表中,仅存储BookId和AuthorId。这样,您就赋予AuthorBooks表管理关系的职责,而不是在每个表中都这样做


试着改变我说的话,然后告诉我是否有错误。

这毫无意义。没有可见的递归,stackoverflow需要递归。请提供更多信息-至少是堆栈跟踪。在第一次和第二次查看时,错误不在您显示的代码中。如果没有递归,就不能有stackoverflow。还要删除多余的标记。这个问题与sql server无关(stackoverflow不在服务器上),在web上没有任何相关性。甚至asp.net-core都是不相关的,因为代码中没有代码行,也没有asp.net-core元素。此处可能存在空引用异常,但