请求的资源不支持 http 方法“GET”。错误代码 405

Posted

技术标签:

【中文标题】请求的资源不支持 http 方法“GET”。错误代码 405【英文标题】:The requested resource does not support http method 'GET'. Error Code 405 【发布时间】:2014-12-16 16:52:30 【问题描述】:

编辑:现在已修复,显然 API 类不能是静态的。

我有一个 Web API

 public sealed class DeploymentController : ApiController

 [HttpGet]
public static HttpResponseMessage Get([FromUri]Parameters deployment)

  if (deployment == null) return new HttpResponseMessage(HttpStatusCode.BadRequest);

  DeploymentRepository.DetermineExtras(deployment);
  HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
  result.Content = new StreamContent(DeploymentRepository.GenerateStreamFromString
    (DeploymentRepository.GetDeployment(deployment)));
  result.Content.Headers.ContentType =
  new MediaTypeHeaderValue("application/cmd");
  result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
  
    FileName = "DeployApplication.vbs"
  ;
  return result;

调用时返回一个文件以供下载。

这个 API 应该被用户点击的链接调用。

喜欢

http://localhost:52998/api/deployment?applicationname=something&systemkind=anotherthing&platformkind=Dotnet

但不是文件,而是错误 405。

A first chance exception of type 'System.Web.Http.HttpResponseException' occurred in System.Web.Http.dll
iisexpress.exe Information: 0 : Response, Status=405 (MethodNotAllowed), Method=GET, Url=http://localhost:52998/api/deployment?applicationname=something&systemkind=anotherthing&platformkind=Dotnet, Message='Content-type='application/xml; charset=utf-8', content-length=unknown'
iisexpress.exe Information: 0 : Operation=XmlMediaTypeFormatter.WriteToStreamAsync

我已经尝试过类似问题的建议方法,到目前为止没有成功。

【问题讨论】:

你在 webapi 中启用了 CORS 了吗? 【参考方案1】:

您似乎没有启用 CORS。以下是启用 CORS 的步骤。

启用 CORS 的步骤:

    安装这个 - Install-Package Microsoft.AspNet.WebApi.Cors using NuGet 打开文件App_Start/WebApiConfig.cs。将以下代码添加到 WebApiConfig.Register 方法中。

    接下来,将[EnableCors] 属性添加到Controller 类:

    有以下参数

    [EnableCors(origins: "your_domain", headers: "*", methods: "GET")]

    重新部署您的 WebAPI 项目。

来源 - http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

更多链接 - http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En

【讨论】:

以上是关于请求的资源不支持 http 方法“GET”。错误代码 405的主要内容,如果未能解决你的问题,请参考以下文章

请求的资源不支持 HTTP 方法“GET”

请求的资源不支持 http 方法 'GET' 但使用 'POST'

WebApi Post 方法总是返回“请求的资源不支持 http 方法 'GET'。”状态:405 方法不允许

请求的资源不支持 Visual Studio 2010 中的 HTTP 方法“GET”

HTTP 状态 405 - 此 URL 不支持 HTTP 方法 GET 并且请求的资源不允许指定的 HTTP 方法

请求的资源不支持使用 Alamofire 的 http 方法“T”(或“ST”)