Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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#EntityFramework内部服务器错误_C#_Asp.net_Entity Framework_Asp.net Web Api - Fatal编程技术网

C#EntityFramework内部服务器错误

C#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”不为空。我做错

我试图在我的一个程序中实现一个新功能。此功能允许添加和编辑项目概述。我在数据库中使用一对多的Foreignkey,其中一个“项目”有一个项目负责人(用户),一个“用户”有多个项目负责人(项目)。现在在WebAPI中,代码实际上达到了“returnOK(projectList);”。但在客户机上,它显示内部服务器错误。 我认为这与外键有关,因为在我实现新功能之前,User类已经存在了。当我调试API时,没有任何错误,并且属性“ProjectLeader”和“ProjectLeads”不为空。我做错了什么

代码如下:

User.cs

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; }
}