将 ASP.NET Web API 部署到生产环境后出现问题

Issue after deploying ASP.NET Web API to production

我在使用 IIS Express 的本地环境中以及在具有完整 IIS 的其他服务器上测试了 ASP.NET Web API。在这两个地方,令牌 api 和 post api 工作正常。我正在按照建议使用 System.Web.Http 命名空间。但是,将其部署到共享托管服务器后,出现以下错误:

令牌API:

"error": "unsupported_grant_type"

Post API(System.Web.Http的[HttpPost]的方法):

"Message": "The requested resource does not support http method 'GET'."

PostAPI代码:

[AllowAnonymous]
[HttpPost]
[Route("api/test")]
public IHttpActionResult Test([FromBody] Employee emp)
{
    ...
}

我正在使用 WebApiConfig.cs 中可用的默认路由,如下所示。不确定它是否重要,因为我已经用 Route:

装饰 API 方法
config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

我尝试使用 FileSystem 方法(将文件上传到服务器并在 IIS 中配置应用程序)和 Web 部署方法直接将 API 部署到服务器。我正在使用 Postman 进行测试,并使用与我在本地测试时使用的相同的 Http 方法 (Post) 和正文。

导致此问题的本地 IIS Express/IIS 和共享托管服务器 IIS 之间有何不同?

据我所知,"error": "unsupported_grant_type"表示您在请求中使用了错误的参数,我建议您可以re-check您的请求header或body到确保您使用了正确的参数类型。

"Message": "The requested resource does not support http method 'GET'." 错误意味着您使用了 get 方法而不是 post 来发送请求。

如果你真的使用post,我建议你可以使用失败请求跟踪来查看当你使用postman发送请求时发生了什么。 Article.

`

问题是托管服务提供商有辅助 URL,需要使用它而不是 public URL。我在 API 调用中用辅助 URL 替换了 public URL,它开始工作了。