我有一个web api应用程序,我使用VS2017和IIS Express 10在本地编写和测试。我可以使用HTTP或HTTPS在本地运行时进行POST和GET。当我发布到Azure时,我在帖子上都不允许使用方法并通过HTTP获取。
如何配置Azure服务器以允许所有HTTP谓词?
如何在Azure上配置HTTPS是另一个故事......
谢谢: - )
答案 0 :(得分:0)
我假设您的Web应用程序使用js库/框架(react / angular)。通常在请求之前,他们使用“选项”动词发送预检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://docs.microsoft.com/en-us/azure/app-service-api/app-service-api-cors-consume-javascript
答案 1 :(得分:0)
请检查您是否正确传递了参数。浪费了很多时间来解决这个问题。
答案 2 :(得分:0)
我遇到了类似的问题,这里的解决方案奏效了。 只需在 POST 调用中将 http 更改为 https 并测试结果。例如在邮递员中,只需将 http 更改为 https。
Azure App Service Error 405 - The request could not be completed. (Method Not Allowed)
答案 3 :(得分:-1)
试试
var result = new ObjectResult("YOUR MESSAGE");
result.StatusCode = StatusCodes.Status405MethodNotAllowed;
return result;
你需要添加这个 => 命名空间 Microsoft.AspNetCore.Mvc