C# POST web api上出现内部错误500
我的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
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文件,以便您的应用程序输出完整的错误消息。我将检查/尝试找出问题的根源:
Users
对象是否与从InsertNewUser
方法发布的对象完全来自同一程序集Users
对象在列表中是否完整(例如,它是否有任何构造函数)string lREST_Uri_Browse = string.Format(@"api/accountapi/saveuserdata"
// User data
/*pModelSerialized*/);
是否格式化url并向其传递任何参数?如果是这样,参数是什么?您的WebApi路由是什么样的顺便说一句:在你的代码中有两件事让我印象深刻(与问题无关):
- 让一个名为“Users”的类代表单个用户是非常令人困惑的。如果是你的代码,我建议把它改成单数
对象上的属性使用缩写-我认为拼写它们不会太贵,我可以向您保证,如果您输入全名而不是神秘的Users
,或者不太神秘但仍然难以阅读(并为此编写)的话,任何熟悉此代码的人都会非常感激BCompanyID
FName
Users
对象是否与从InsertNewUser
方法发布的对象完全来自同一程序集Users
对象在列表中是否完整(例如,它是否有任何构造函数)string lREST_Uri_Browse = string.Format(@"api/accountapi/saveuserdata"
// User data
/*pModelSerialized*/);
是否格式化url并向其传递任何参数?如果是这样,参数是什么?您的WebApi路由是什么样的顺便说一句:在你的代码中有两件事让我印象深刻(与问题无关):
- 让一个名为“Users”的类代表单个用户是非常令人困惑的。如果是你的代码,我建议把它改成单数
对象上的属性使用缩写-我认为拼写它们不会太贵,我可以向您保证,如果您输入全名而不是神秘的Users
,或者不太神秘但仍然难以阅读(并为此编写)的话,任何熟悉此代码的人都会非常感激BCompanyID
FName
$.post(@“api/accountapi/saveuserdata)”,{Email:e@example.com,FName=“Vlad”…}
),从而从方程中删除InsertNewUser
。如果在SaveNewuser
中仍然得到nullpNewUser
参数,那么我将查看API的路由配置,以确保服务器需要SaveUserData(Users)
。如果您从jQuery获得一个非null的pNewUser
,那么我将仔细查看InsertNewUser
的输出。如果我
Users existingUser = asigCtx.Users.Where(u => u.Email == pNewUser.Email).SingleOrDefault();