2016-04-05 30 views
0

Web.Apiを使用しているうちにメソッドが取得できません(405)。私はすべてのステップに従ったが、問題はまだそこにある。しかし、私はsoapUiを介してテストするとき、それはうまく動作します。Web.apiを呼び出して「メソッドが許可されていません」エラー '

 using (var client = new HttpClient()) 
      { 
       client.BaseAddress = new Uri("http://100.7.11.76"); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
       var response12 = client.GetAsync("test.Api/api/account/ForgotPassword?EmailId=" + email + "").Result; 
       if (response12.IsSuccessStatusCode) 
       { 
        string responseString = response12.Content.ReadAsStringAsync().Result; 
       } 
      } 
+0

を使用しよう... 'それは*' client.PostAsync(.. 'でなければなりません* post request **。 –

+0

私の場合は、client.PostAsync()の例を教えてください。 –

答えて

0

WebAPIコントローラForgotPasswordResponseは動詞 "POST"を受け入れ、WebAPIクライアントはGETとしてそれを呼び出しています。したがって、あなたは406:メソッドが許可されていない応答を取得します。コントローラがGetAsyncの代わりにPostAsJsonAsyncメソッドを使用してGET動詞を受け入れるか、WebAPIを呼び出すようにします。あなた `ForgotPassword`アクションメソッドのみを受け入れているので

+0

私は405エラーを受け取りました。私にそれを呼び出すコードを提供できますか? –

+0

client.PostAsJsonAsync( "test.Api/api/account/ForgotPassword "、email).Result; –

+0

httpclientでPostAsJsonAsyncメソッドを見つけることができません。このメソッドの定義がhttpclientに含まれていないと、4.5フレームワークを使用しています。 –

0

変更[Route("api/account/ForgotPassword")]からRoute属性、のようなRESTクライアントからあなたの方法を取得し、テストするためのPOSTからの変更:サービスコールを消費

[Route("ForgotPassword")] 
    [AcceptVerbs("POST")] 
    public ForgotPasswordResponse ForgotPassword(string emailId) 
    { 

     AccountInfo accountInfo = _manager.GetUserByEmailId(emailId); 

     if (accountInfo == null) 
      return new ForgotPasswordResponse 
      { 
       Response = "error", 
       Message = "Email address not found" 
      }; 

     return new ForgotPasswordResponse 
     { 
      Response = "success", 
      Message = "password reset link set to registered email id" 
     }; 
    } 

Web.Api宣言を助けてくださいまずPostManを起動し、アプリケーションで使用します。

0

代わりに` client.GetAsync(の認証フィルタを[のAllowAnonymous]

 [AllowAnonymous] 
     [Route("ForgotPassword")] 
     [AcceptVerbs("POST")] 
     public ForgotPasswordResponse ForgotPassword(string emailId) 
     { 

      AccountInfo accountInfo = _manager.GetUserByEmailId(emailId); 

      if (accountInfo == null) 
       return new ForgotPasswordResponse 
       { 
        Response = "error", 
        Message = "Email address not found" 
       }; 

      return new ForgotPasswordResponse 
      { 
       Response = "success", 
       Message = "password reset link set to registered email id" 
      }; 
     } 
関連する問題