调用 EntityFrameWork 核心时 AspNetCore 2.0 崩溃(溢出异常)
AspNetCore 2.0 crashing when calling EntityFrameWork core (Overflow Exception)
这个问题我已经有一段时间了,也和微软谈过了,目前还没有解决办法。
现在我已经在一个全新的项目中重现了这个错误。
我已经删除了所有不必要的代码,但这段代码仍然给我错误:
System.WhosebugException occurred
HResult=0x800703E9
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
我的项目由 Startup.cs class 组成,内容如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<FrilivDB>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).EnableSensitiveDataLogging());
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute("ViewProduct", "{brand}/{productTitle}", defaults: new { controller = "Products", action = "Details" });
});
}
}
我的产品控制器如下所示:
public class ProductsController : Controller
{
private readonly FrilivDB _context;
public ProductsController(FrilivDB context)
{
_context = context;
}
public async Task<IActionResult> Details(string brand, string productTitle)
{
var product = _context.Products.Select(p => p.Title);
return View();
}
}
并且在调试器中经过这一行时发生错误:
var product = _context.Products.Select(p => p.Title);
每次等待 15 到 30 秒后都会出现错误。
有没有人有任何想法或经历过同样的事情?
这是我在输出中看到的 window:
AO.Shop> Request starting HTTP/1.1 GET http://localhost:44317/tatonka/alaska
AO.Shop> info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
AO.Shop> Request starting HTTP/1.1 GET http://localhost:44317/tatonka/alaska
AO.Shop> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
AO.Shop> Executing action method AO.Shop.Controllers.ProductsController.Details (AO.Shop) with arguments (tatonka, alaska) - ModelState is Valid
AO.Shop> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
AO.Shop> Executing action method AO.Shop.Controllers.ProductsController.Details (AO.Shop) with arguments (tatonka, alaska) - ModelState is Valid
AO.Shop>
AO.Shop> Process is terminating due to WhosebugException.
添加一个或多个 try-catch 语句以获取有关正在生成的异常的更多信息。然后使用该信息更新您的代码以防止发生异常。
此外,请考虑查看 Microsoft 为 ASP.NET 2.0 提供的补丁。此 ASP.NET 2.0 hotfix rollup package page 引用了一些可能适用于您的问题的问题。另一种选择是升级到 ASP.NET 3.5+,但我认为您正试图避免这种方法。
希望对您有所帮助。
在与 Microsoft 进行了大量沟通并进行了大量调试和注释代码之后,我发现了问题所在。
这是由于数据库设置不当造成的。
我的数据库中有 4 个表将它们自身引用为外键,这从 EF Core 中给出了 Whosebug 异常。
删除所有 4 个并重建整个模型后,它成功了。
感谢您的输入
这个问题我已经有一段时间了,也和微软谈过了,目前还没有解决办法。 现在我已经在一个全新的项目中重现了这个错误。 我已经删除了所有不必要的代码,但这段代码仍然给我错误:
System.WhosebugException occurred
HResult=0x800703E9
Source=<Cannot evaluate the exception source>
StackTrace:
<Cannot evaluate the exception stack trace>
我的项目由 Startup.cs class 组成,内容如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<FrilivDB>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).EnableSensitiveDataLogging());
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
routes.MapRoute("ViewProduct", "{brand}/{productTitle}", defaults: new { controller = "Products", action = "Details" });
});
}
}
我的产品控制器如下所示:
public class ProductsController : Controller
{
private readonly FrilivDB _context;
public ProductsController(FrilivDB context)
{
_context = context;
}
public async Task<IActionResult> Details(string brand, string productTitle)
{
var product = _context.Products.Select(p => p.Title);
return View();
}
}
并且在调试器中经过这一行时发生错误:
var product = _context.Products.Select(p => p.Title);
每次等待 15 到 30 秒后都会出现错误。 有没有人有任何想法或经历过同样的事情?
这是我在输出中看到的 window:
AO.Shop> Request starting HTTP/1.1 GET http://localhost:44317/tatonka/alaska
AO.Shop> info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
AO.Shop> Request starting HTTP/1.1 GET http://localhost:44317/tatonka/alaska
AO.Shop> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
AO.Shop> Executing action method AO.Shop.Controllers.ProductsController.Details (AO.Shop) with arguments (tatonka, alaska) - ModelState is Valid
AO.Shop> info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[1]
AO.Shop> Executing action method AO.Shop.Controllers.ProductsController.Details (AO.Shop) with arguments (tatonka, alaska) - ModelState is Valid
AO.Shop>
AO.Shop> Process is terminating due to WhosebugException.
添加一个或多个 try-catch 语句以获取有关正在生成的异常的更多信息。然后使用该信息更新您的代码以防止发生异常。
此外,请考虑查看 Microsoft 为 ASP.NET 2.0 提供的补丁。此 ASP.NET 2.0 hotfix rollup package page 引用了一些可能适用于您的问题的问题。另一种选择是升级到 ASP.NET 3.5+,但我认为您正试图避免这种方法。
希望对您有所帮助。
在与 Microsoft 进行了大量沟通并进行了大量调试和注释代码之后,我发现了问题所在。
这是由于数据库设置不当造成的。 我的数据库中有 4 个表将它们自身引用为外键,这从 EF Core 中给出了 Whosebug 异常。
删除所有 4 个并重建整个模型后,它成功了。 感谢您的输入