2016-04-05 51 views
0

雖然消費web.Api我得到方法不允許(405)。我跟着所有步驟,但問題仍然存在。但是當我通過soapUi測試時,它運行良好。請幫助雖然調用Web.api獲取'方法不允許'錯誤'

Web.Api聲明:

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

消費服務電話:

 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.GetAsync(..'應該是'client.PostAsync(..'因爲你'ForgotPassword' action方法只接受* *發佈請求**。 –

+0

你能給我舉例client.PostAsync(),在我的情況下。 –

回答

0

您的WebAPI控制器ForgotPasswordResponse接受動詞「POST」,並且您的WebAPI客戶端將其調用爲GET。因此你得到406:方法不允許的迴應。可以讓您的控制器接受GET動詞,或使用PostAsJsonAsync方法而不是GetAsync調用WebAPI。

+0

我得到405錯誤,你能否給我提供代碼來調用它 –

+0

client.PostAsJsonAsync(「test.Api/api/account/ForgotPassword「,email).Result; –

+0

我無法在httpclient中找到PostAsJsonAsync方法,它說這個httpclient不包含這個方法的定義,我使用的是4.5框架。 –

0

更改Route屬性[Route("api/account/ForgotPassword")],從POST更改爲GET和REST客戶端,像測試方法首先使用PostMan,然後在您的應用程序中使用它。

0

嘗試使用身份驗證篩選器[使用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" 
      }; 
     } 
相關問題