Http 405:请求的资源不支持'GET'

时间:2018-02-11 05:59:27

标签: c# asp.net-web-api

你好我有一个尝试使用的注册方法,这实际上是一个POST但返回一个Get。这发生在生产服务器上。

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

尝试此解决方案https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications但没有成功

3 个答案:

答案 0 :(得分:0)

您必须更新您的Register方法以允许发布电话。

见下文。

[AllowAnonymous]
[Route("register")]
[HttpPost]
public async Task<IHttpActionResult> Register(Users user)
{
   //Your code
}

答案 1 :(得分:0)

之前我遇到过这个问题(405:方法不允许),删除WebDav发布功能解决了这个问题。您可以转到添加/删除功能,在IIS下,尝试删除Web Dav发布。以下是从Windows 10控制台拍摄的屏幕截图(可能因服务器操作系统而异)

是的,我相信[HttpPost]注释是必需的。

enter image description here

答案 2 :(得分:0)

在您的控制器中,您将有两个注册方法,一个使用get注释返回视图,另一个使用post注释创建或注册用户自己。我创建了一个新项目,我可以如下

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