C# Http 405:请求的资源不支持';获取';
您好,我有一个register方法,它实际上是一个POST,但返回一个Get。这在生产服务器上发生C# Http 405:请求的资源不支持';获取';,c#,asp.net-web-api,C#,Asp.net Web Api,您好,我有一个register方法,它实际上是一个POST,但返回一个Get。这在生产服务器上发生 [RoutePrefix("register')] public class RegisterController : ApiController { private UserRepository userRepository; public RegisterController() { userRepository = new Use
[RoutePrefix("register')]
public class RegisterController : ApiController
{
private UserRepository userRepository;
public RegisterController()
{
userRepository = new UserRepository();
}
[AllowAnonymous]
[Route("")]
public async Task<IHttpActionResult> Register(Users user)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
IdentityResult result = await userRepository.RegisterUser(user);
IHttpActionResult error = GetError(result);
if(error != null)
{
return error;
}
return Ok();
}
[RoutePrefix(“寄存器”)]
公共类注册控制器:ApiController
{
私有用户存储库用户存储库;
公共注册表控制器()
{
userRepository=newuserrepository();
}
[异名]
[路线(“”)
公共异步任务寄存器(用户)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
IdentityResult结果=等待userRepository.RegisterUser(用户);
IHttpActionResult error=GetError(结果);
if(错误!=null)
{
返回误差;
}
返回Ok();
}
尝试此解决方案未成功您必须更新注册方法以允许Post调用 见下文
[AllowAnonymous]
[Route("register")]
[HttpPost]
public async Task<IHttpActionResult> Register(Users user)
{
//Your code
}
[AllowAnonymous]
[路线(“登记”)]
[HttpPost]
公共异步任务寄存器(用户)
{
//你的代码
}
我以前遇到过此问题(405:不允许使用方法),删除WebDav发布功能解决了此问题。您可以转到“添加/删除功能”,然后在IIS下尝试删除Web Dav发布。下面是从windows 10控制台拍摄的屏幕截图(可能因服务器操作系统而异)
是的,我认为需要[HttpPost]注释
在您的控制器中,您将有两种注册方法,一种是使用get annotation返回视图,另一种是使用post annotation创建或注册用户本身。我已经创建了一个新项目,我可以按如下方式执行
[AllowAnonymous]
public ActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
// a lot goes in here
}
return View(model);
}
[AllowAnonymous]
公众行动结果登记册()
{
返回视图();
}
//
//职位:/Account/Register
[HttpPost]
[异名]
[ValidateAntiForgeryToken]
公共异步任务寄存器(RegisterViewModel模型)
{
if(ModelState.IsValid)
{
//这里有很多东西
}
返回视图(模型);
}
我们必须说[HttpPost]注释用于register方法。它不是吗???实际上是一个POST,但返回一个Get。
我不明白该语句的意思。它应该返回一个POST错误,但我想知道为什么在Azure上它返回一个Get不支持的错误