Запрошенный ресурс не поддерживает метод http GET. Код ошибки 405

Изменить: теперь исправлено, по-видимому, классы API не могут быть статическими.

У меня есть веб-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

Я уже пробовал методы, предложенные на подобные вопросы, пока безуспешно.


person Norman Wigand    schedule 21.10.2014    source источник
comment
Вы включили CORS в webapi?   -  person Arindam Nayak    schedule 21.10.2014


Ответы (1)


Кажется, вы не включили CORS. Ниже приведены шаги, чтобы включить CORS.

Шаги, чтобы включить CORS:

  1. Установите это - Install-Package Microsoft.AspNet.WebApi.Cors using NuGet
  2. Откройте файл App_Start/WebApiConfig.cs. Добавьте следующий код в метод WebApiConfig.Register.
  3. Затем добавьте атрибут [EnableCors] в класс Controller:

    Со следующими параметрами

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

  4. Повторно разверните свой проект 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

person Arindam Nayak    schedule 21.10.2014