2016-10-20 4 views
2

コントローラでHTTP POSTリクエストを送信します。非静的メソッドはwebapiのターゲットを必要とします

これは私のコードです:

[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()));

t.Id.Equals(2342)」のようにIDを実際のIDに変更すると、エラーは解決されます。私は実際のIDを使用したくありません。

+0

を試してみてください?それはコンパイル時エラーかランタイムエラーですか?スタックトレースがある場合は、質問をスタックトレースで更新できますか? –

答えて

0

はこのuseridないnulluserid.id.ToString()

DAL.AspNetUser q = db.AspNetUsers.Single(t=>t.Id.Equals(userid.id.ToString())); 

nullは、任意のラムダ変数の戻りnullはその後、このタイプのエラーが発生したときに返されていないことを確認します。あなたは

このような
DAL.AspNetUser q = db.AspNetUsers.SingleOrDefault(t=>t.Id == userid.id.ToString()); 
+0

ありがとう、私はしたが、エラーは解決していません –

+0

@ soft_94デバッグを試みて、 'userid.id'の値は何ですか? – Mostafiz

+0

はい、この行はデバッグしませんでした。どうすればいいですか? –

0

を行うことができ、これを防止するために

あなたの問題は、おそらくユーザーを見つけることができません。次の行にあるようだ。

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()); 
+0

ありがとう、私は解決しませんでしたが、エラーは解決しませんでした –

0

t.Id.Equals(2342)点の作品、そしてt.Idは文字列であってはなりませんので、あなたが.ToString()

を使用すべきではありませんが行でエラーが発生

db.AspNetUsers.Single(t=>t.Id.Equals(userid.id)); 

または

db.AspNetUsers.Single(t=>t.Id == userid.id); 
+0

IDは文字列であり、数字はちょうど例でした! :)お返事ありがとうございました –

+0

その場合、一時変数にuserid.idを割り当てて、その変数を式で使用してみましたか? – sgmoore

1
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); 
関連する問題