C#EntityFramework内部服务器错误
我试图在我的一个程序中实现一个新功能。此功能允许添加和编辑项目概述。我在数据库中使用一对多的Foreignkey,其中一个“项目”有一个项目负责人(用户),一个“用户”有多个项目负责人(项目)。现在在WebAPI中,代码实际上达到了“returnOK(projectList);”。但在客户机上,它显示内部服务器错误。 我认为这与外键有关,因为在我实现新功能之前,User类已经存在了。当我调试API时,没有任何错误,并且属性“ProjectLeader”和“ProjectLeads”不为空。我做错了什么 代码如下: User.csC#EntityFramework内部服务器错误,c#,asp.net,entity-framework,asp.net-web-api,C#,Asp.net,Entity Framework,Asp.net Web Api,我试图在我的一个程序中实现一个新功能。此功能允许添加和编辑项目概述。我在数据库中使用一对多的Foreignkey,其中一个“项目”有一个项目负责人(用户),一个“用户”有多个项目负责人(项目)。现在在WebAPI中,代码实际上达到了“returnOK(projectList);”。但在客户机上,它显示内部服务器错误。 我认为这与外键有关,因为在我实现新功能之前,User类已经存在了。当我调试API时,没有任何错误,并且属性“ProjectLeader”和“ProjectLeads”不为空。我做错
public int Id { get; set; }
[Required(AllowEmptyStrings = false)]
public string Username { get; set; }
[Required(AllowEmptyStrings = false)]
public string PasswordHash { get; set; }
[Required(AllowEmptyStrings = false)]
[EmailAddress(ErrorMessage = "Invalid email format")]
public string EMail { get; set; }
[Required(AllowEmptryStrings = false)]
public DateTime Birthdate { get; set; }
public bool IsConfirmed { get; set; }
public bool FirstLogin { get; set; }
[Required(AllowEmptyStrings = false)]
public int ActivationCode { get; set; }
public UserRole UserRole { get; set; }
public byte[] ProfilePicture { get; set; }
public UserGroup UserGroup { get; set; }
public virtual ICollection<Project> ProjectLeads { get; set; }
UserRole、UserGroup和ProjectState是枚举
下载项目列表的方法:
[HttpGet]
public IHttpActionResult GetProjects()
{
var db = new DataBaseContext();
try
{
if (db.Projects.Any())
{
var projectList = db.Projects.ToList();
return Ok(projectList);
}
else
return Ok(new List<Project>());
}
catch (Exception ex)
{
log.Fatal($"Ein Fehler ist aufgetreten beim Runterladen der Projekte: {ex.Message}", ex);
return BadRequest();
}
}
[HttpGet]
公共IHttpActionResult GetProjects()
{
var db=新数据库上下文();
尝试
{
if(db.Projects.Any())
{
var projectList=db.Projects.ToList();
返回Ok(项目列表);
}
其他的
返回Ok(新列表());
}
捕获(例外情况除外)
{
log.Fatal($“Ein Fehler ist aufgetreten beim runterladden der Projekte:{ex.Message}”,ex);
返回请求();
}
}
(“Ein Fehler ist aufgetreten beim RUNTERLANDED der Projekte”表示“下载项目时出错”)
如果重要的话,这里是DataBaseContext.cs:
public class DataBaseContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<License> Licences { get; set; }
public DbSet<Project> Projects { get; set; }
}
公共类数据库上下文:DbContext
{
公共数据库集用户{get;set;}
公共数据库集许可证{get;set;}
公共数据库集项目{get;set;}
}
我在网站上或家里的书中搜索了多个教程。我完全按照他们说的做了。我遗漏了什么吗?对于捕获到的异常:包括
消息
、类型
、堆栈跟踪
,然后在内部异常
上递归重复此操作。在您的问题上使用,以包括该细节,不要将其作为评论。根据您的log
语句,您可能正在使用log4net,在这种情况下,所有这些信息都应该在日志文件中随时可用。禁用CustomErrors并发布异常/堆栈跟踪。
public class DataBaseContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<License> Licences { get; set; }
public DbSet<Project> Projects { get; set; }
}