C# POST web api上出现内部错误500

C# POST web api上出现内部错误500,c#,asp.net-web-api,C#,Asp.net Web Api,我的web api应用程序有问题。当我试图在数据库中发布(保存)一个新用户时,我得到一个内部错误500。 下面的函数是我用来进行客户端调用的函数 public void InsertNewUser(RegisterModel pNewUser, string pEmail) { // Build rest uri string lREST_Uri_Browse = string.Format(@"api/accountapi/saveuserdata" // User d

我的web api应用程序有问题。当我试图在数据库中发布(保存)一个新用户时,我得到一个内部错误500。 下面的函数是我用来进行客户端调用的函数

public void InsertNewUser(RegisterModel pNewUser, string pEmail)
{
    // Build rest uri
    string lREST_Uri_Browse = string.Format(@"api/accountapi/saveuserdata"
    // User data
    /*pModelSerialized*/);

    // Complete URI
    string lREST_Uri = Helpers_API.endPoint + lREST_Uri_Browse;

    var client = new HttpClient();

    client.BaseAddress = new Uri(Helpers_API.endPoint);

        var newUser = new Models.Models_API.Users
        {
            Email = pNewUser.Email,
            FName = pNewUser.FName,
            LName = pNewUser.LName,
            Inserted = DateTime.Now,
            ActiveAcc = true,
            AccType = pNewUser.AccType,
            BCompanyID = pNewUser.CompanyID,
            PID = pNewUser.PID,
            Password = pNewUser.Password,
            Token = GetToken(pEmail),
            ThirdParty = 0,
            Gender = pNewUser.Gender,
            BirthDate = pNewUser.BirthDate
        };

        // Add an Accept header for JSON format.
        //client.DefaultRequestHeaders.Accept.Add(
        //    new MediaTypeWithQualityHeaderValue("application/json"));
        // Create the JSON formatter.
        MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter();

        // Use the JSON formatter to create the content of the request body.
        HttpContent content = new ObjectContent<Models.Models_API.Users>(newUser, jsonFormatter);

        var result = client.PostAsync(lREST_Uri_Browse, content).Result;
}
下面是ApicController中的帖子:

public HttpResponseMessage SaveUserData(Users pNewUser)
    {
        bool createUser = false;
        // First check for provided email in DB
        Users existingUser = asigCtx.Users.Where(u => u.Email == pNewUser.Email).SingleOrDefault();
        if (existingUser == null)
            createUser = true;
        else if (existingUser.ActiveAcc)
            createUser = true;

        if (createUser)
        {
            using (asigCtx = new AsigPrimeContext())
            {
                Users user = new Users()
                {
                    Email = pNewUser.Email,
                    FName = pNewUser.FName,
                    LName = pNewUser.LName,
                    Inserted = DateTime.Now,
                    ActiveAcc = true,
                    AccType = pNewUser.AccType,
                    BCompanyID = pNewUser.BCompanyID,
                    PID = pNewUser.PID,
                    Password = pNewUser.Password,
                    Token = pNewUser.Token,
                    ThirdParty = 0,
                    Gender = pNewUser.Gender,
                    BirthDate = pNewUser.BirthDate,
                };

                asigCtx.Users.Add(user);

                asigCtx.SaveChanges();
            }
        }
        var response = Request.CreateResponse<Users>(HttpStatusCode.Created, pNewUser);
        return response;
    }
public HttpResponseMessage SaveUserData(Users pNewUser)
{
bool createUser=false;
//首先检查数据库中提供的电子邮件
用户existingUser=asigCtx.Users.Where(u=>u.Email==pNewUser.Email).SingleOrDefault();
if(existingUser==null)
createUser=true;
else if(existingUser.ActiveAcc)
createUser=true;
如果(createUser)
{
使用(asigCtx=new AsigPrimeContext())
{
用户用户=新用户()
{
Email=pNewUser.Email,
FName=pNewUser.FName,
LName=pNewUser.LName,
插入=日期时间。现在,
ActiveAcc=true,
AccType=pNewUser.AccType,
BCompanyID=pNewUser.BCompanyID,
PID=pNewUser.PID,
Password=pNewUser.Password,
令牌=pNewUser.Token,
第三方=0,
性别=pNewUser.Gender,
生日=pNewUser.BirthDate,
};
asigCtx.Users.Add(用户);
asigCtx.SaveChanges();
}
}
var response=Request.CreateResponse(HttpStatusCode.Created,pNewUser);
返回响应;
}

有人能给我一些关于这段代码的建议吗?因为我是这方面的新手,我只想这样做。您的代码中有一个错误。500错误表示代码包含未经处理的异常,导致其工作进程死亡


更改web.config文件,以便应用程序输出完整的错误消息。

您的代码中有错误。500错误表示代码包含未经处理的异常,导致其工作进程死亡


更改您的web.config文件,以便您的应用程序输出完整的错误消息。

我将检查/尝试找出问题的根源:

  • 上面的代码是否与应用程序中的代码完全相同,或者您是否更改了任何内容(即使只是为了简化)

  • SaveUserData控制器方法中使用的
    Users
    对象是否与从
    InsertNewUser
    方法发布的对象完全来自同一程序集

  • Users
    对象在列表中是否完整(例如,它是否有任何构造函数)

  • 您是否尝试过通过fiddler执行对端点的请求?通过这种方式,您可以将客户端调用中的任何潜在错误排除在等式之外,以查看控制器方法本身是否有效

  • 我注意到这句话:

    string lREST_Uri_Browse = string.Format(@"api/accountapi/saveuserdata"
    // User data
    /*pModelSerialized*/);
    
    是否格式化url并向其传递任何参数?如果是这样,参数是什么?您的WebApi路由是什么样的

  • 这应该足够开始了——让我知道你进展如何


    顺便说一句:在你的代码中有两件事让我印象深刻(与问题无关):

    • 让一个名为“Users”的类代表单个用户是非常令人困惑的。如果是你的代码,我建议把它改成单数

    • Users
      对象上的属性使用缩写-我认为拼写它们不会太贵,我可以向您保证,如果您输入全名而不是神秘的
      BCompanyID
      ,或者不太神秘但仍然难以阅读(并为此编写)的话,任何熟悉此代码的人都会非常感激
      FName


    我将检查/尝试找出问题的根源:

  • 上面的代码是否与应用程序中的代码完全相同,或者您是否更改了任何内容(即使只是为了简化)

  • SaveUserData控制器方法中使用的
    Users
    对象是否与从
    InsertNewUser
    方法发布的对象完全来自同一程序集

  • Users
    对象在列表中是否完整(例如,它是否有任何构造函数)

  • 您是否尝试过通过fiddler执行对端点的请求?通过这种方式,您可以将客户端调用中的任何潜在错误排除在等式之外,以查看控制器方法本身是否有效

  • 我注意到这句话:

    string lREST_Uri_Browse = string.Format(@"api/accountapi/saveuserdata"
    // User data
    /*pModelSerialized*/);
    
    是否格式化url并向其传递任何参数?如果是这样,参数是什么?您的WebApi路由是什么样的

  • 这应该足够开始了——让我知道你进展如何


    顺便说一句:在你的代码中有两件事让我印象深刻(与问题无关):

    • 让一个名为“Users”的类代表单个用户是非常令人困惑的。如果是你的代码,我建议把它改成单数

    • Users
      对象上的属性使用缩写-我认为拼写它们不会太贵,我可以向您保证,如果您输入全名而不是神秘的
      BCompanyID
      ,或者不太神秘但仍然难以阅读(并为此编写)的话,任何熟悉此代码的人都会非常感激
      FName


    我会使用jQuery将一些Json发布到相同的URL(
    $.post(@“api/accountapi/saveuserdata)”,{Email:e@example.com,FName=“Vlad”…}
    ),从而从方程中删除
    InsertNewUser
    。如果在
    SaveNewuser
    中仍然得到null
    pNewUser
    参数,那么我将查看API的路由配置,以确保服务器需要
    SaveUserData(Users)
    。如果您从jQuery获得一个非null的
    pNewUser
    ,那么我将仔细查看
    InsertNewUser
    的输出。如果我
    Users existingUser = asigCtx.Users.Where(u => u.Email == pNewUser.Email).SingleOrDefault();