Azure ASP Web API错误405方法不允许。

3

我有一个Web API应用程序,使用VS2017和IIS Express 10在本地编写和测试。无论是使用HTTP还是HTTPS,在本地运行时都可以进行POST和GET操作。但是,当我将其发布到Azure时,使用HTTP进行POST和GET操作时会出现方法不允许的错误。

如何配置Azure服务器以允许所有HTTP动词?

如何在Azure上配置HTTPS则是另一回事...

谢谢 :-)


通常情况下,这应该“只是工作”。添加一些日志记录(考虑使用Application Insights)以查看问题所在。为了测试目的,你是如何调用POST和GET方法的? - undefined
4个回答

7

1
哇!这真是救了我! - undefined

1

请检查您是否正确传递了参数。浪费了很多时间才弄清楚。


同意。我一直在进行POST请求时收到405响应,因为我的路径是“.../_apis/tfvc/changesets?api-version=4.1-preview.1”。当我删除了“-preview.1”后,它开始工作:“.../_apis/tfvc/changesets?api-version=4.1。”感谢您的帮助。 - undefined

0

我假设你的网页应用程序使用了一个js库/框架(react / angular)。通常在发送请求之前,它们会使用"Options"动词发送一个预检CORS请求。我相信这个请求被阻止了。

解决这个问题的一种简单方法:

Web.config:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD" />
        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

BaseApiController.cs:

 public class BaseApiController : ApiController
  {
    public HttpResponseMessage Options()
    {
      return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
    }
  }

如果是跨域问题,您可以直接通过Azure门户配置CORS。

https://learn.microsoft.com/en-us/azure/app-service-api/app-service-api-cors-consume-javascript


-1

试试看

  var result = new ObjectResult("YOUR MESSAGE");
  result.StatusCode = StatusCodes.Status405MethodNotAllowed;

  return result;

你需要添加这个 => namespace Microsoft.AspNetCore.Mvc


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接