将 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,它开始工作了。
我在使用 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,它开始工作了。