非静态方法需要webapi中的目标
本文关键字:目标 webapi 静态方法 | 更新日期: 2023-09-27 18:14:10
我想在控制器中发送一个HTTP POST请求。
这是我的代码:
[HttpPost]
public IHttpActionResult login([FromBody] ClubAPI.Models.AllRequest.login userid)
{
using (DAL.ClubEntities db = new ClubEntities())
{
DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString()));
if (q == null)
{
return Ok(new ClubAPI.Models.AllResponse.loginResponse
{
msg = "bad",
state = false,
});
}
return Ok(new ClubAPI.Models.AllResponse.loginResponse
{
msg = "good",
state = true,
token = q.UserName,
});
}
}
但是现在我得到下面的错误:
"非静态方法需要webapi中的目标"我无法解决这个问题。的错误与这一行有关:db.AspNetUsers.Single (t => t.Id.Equals (userid.id.ToString ())),
当我将ID更改为真实ID时,如"t.Id.Equals(2342)
",错误解决;但是我不想使用真实的ID。
Try this code instead of
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString());
into
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id);
似乎你的问题在下面一行,可能没有找到用户:
DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString()));
这样写(取决于id的类型),当没有找到用户时将返回null:
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString());
如果t.Id.Equals(2342)
工作,那么t.d一定不是字符串,所以你不应该使用.ToString()
试
db.AspNetUsers.Single(t=>t.Id.Equals(userid.id));
或
db.AspNetUsers.Single(t=>t.Id == userid.id);
确保userid
不是null
和userid.id.ToString()
不返回null
DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString()));
当任何lambda变量返回null
时,则发生这种类型的错误。
为了避免这种情况,你可以这样做
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString());