我有一个Web API应用程序,使用VS2017和IIS Express 10在本地编写和测试。无论是使用HTTP还是HTTPS,在本地运行时都可以进行POST和GET操作。但是,当我将其发布到Azure时,使用HTTP进行POST和GET操作时会出现方法不允许的错误。
如何配置Azure服务器以允许所有HTTP动词?
如何在Azure上配置HTTPS则是另一回事...
谢谢 :-)
我有一个Web API应用程序,使用VS2017和IIS Express 10在本地编写和测试。无论是使用HTTP还是HTTPS,在本地运行时都可以进行POST和GET操作。但是,当我将其发布到Azure时,使用HTTP进行POST和GET操作时会出现方法不允许的错误。
如何配置Azure服务器以允许所有HTTP动词?
如何在Azure上配置HTTPS则是另一回事...
谢谢 :-)
我曾遇到类似的问题,这里的解决方案可行。 在POST调用中,只需将http更改为https并测试结果即可。例如在Postman中,仅更改http为https。
请检查您是否正确传递了参数。浪费了很多时间才弄清楚。
我假设你的网页应用程序使用了一个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 };
}
}
https://learn.microsoft.com/en-us/azure/app-service-api/app-service-api-cors-consume-javascript
试试看
var result = new ObjectResult("YOUR MESSAGE");
result.StatusCode = StatusCodes.Status405MethodNotAllowed;
return result;
你需要添加这个 => namespace Microsoft.AspNetCore.Mvc