Skip to main content
 首页 » 编程设计

c#之POST web api 上的内部错误 500

2024年02月01日2798°冷暖

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

这是模型

public class Users 
{ 
    public int BrokerID { get; set; } 
    public DateTime Inserted { get; set; } 
    public string Email { get; set; } 
    public string FName { get; set; } 
    public string LName { get; set; } 
    public bool ActiveAcc { get; set; } 
    public int BCompanyID { get; set; } 
    public int PID { get; set; } 
    public int AccType { get; set; } 
    public string Password { get; set; } 
    public string Token { get; set; } 
    public int Gender { get; set; } 
    public DateTime BirthDate { get; set; } 
    public int ThirdParty { get; set; } 
} 

下面是 APIController 中的 POST:

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

谁能给我一些关于这段代码的建议,因为我是新手,我只想把它做好。 TNX

请您参考如下方法:

您的代码有错误。 500 错误表示您的代码包含一个未处理的异常,该异常杀死了它的工作进程。

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