调用 Web.api 时收到 'Method not allowed' 错误'
While Calling Web.api getting 'Method not allowed' error'
在使用 web.Api 时,我得到了不允许的方法 (405)。我遵循了所有步骤,但问题仍然存在。但是当我通过 soapUi 进行测试时,它运行良好。请帮助
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;
}
}
将 Route
属性更改为 [Route("api/account/ForgotPassword")]
,将 POST 更改为 GET 并首先从 REST 客户端(例如 PostMan)测试您的方法,然后在您的应用程序中使用它。
您的 WebAPI 控制器 ForgotPasswordResponse
接受动词 "POST" 并且您的 WebAPI 客户端以 GET 方式调用它。因此你得到 406: Method not allowed 响应。让您的控制器接受 GET 动词或使用 PostAsJsonAsync 方法而不是 GetAsync
.
调用 WebAPI
尝试使用身份验证过滤器 [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"
};
}
在使用 web.Api 时,我得到了不允许的方法 (405)。我遵循了所有步骤,但问题仍然存在。但是当我通过 soapUi 进行测试时,它运行良好。请帮助
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;
}
}
将 Route
属性更改为 [Route("api/account/ForgotPassword")]
,将 POST 更改为 GET 并首先从 REST 客户端(例如 PostMan)测试您的方法,然后在您的应用程序中使用它。
您的 WebAPI 控制器 ForgotPasswordResponse
接受动词 "POST" 并且您的 WebAPI 客户端以 GET 方式调用它。因此你得到 406: Method not allowed 响应。让您的控制器接受 GET 动词或使用 PostAsJsonAsync 方法而不是 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"
};
}