Я настраиваю веб-API ASP.net, но продолжаю получать 404 со всех маршрутов Http.
Это выполняется на http://localhost:52011/, поскольку это местоположение по умолчанию, которое использует VS2013,Я добавил простой тест HttpRoute, который просто возвращает строку, если она вызывается с GET для проверки возможности подключения.
Просмотр каталогов включен для обратной связи о том, что веб-API на самом деле находится на localhost, и все каталогипроект виден.
Я попытался установить имя контроллера, фиксированное в маршрутах в WebApiConfig.cs, и много читал об отображениях HttpRoute, но я продолжаю получать либо 404, либо "Тип не найден, чтосоответствует контроллеру с именем controllername".
Я использую Почтальон для тестирования, поскольку это было рекомендовано и удобно в использовании.
Любые советы приветствуются!
WebApiConfig.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace BadgePrinter
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
//route to print badge.
config.Routes.MapHttpRoute(
name: "apiPrint",
routeTemplate: "api/{controller}/{action}/{Bedrijf}/{Aanspreektitel}/{Voornaam}/{Achternaam}/{Jobtitle}/{Kopies}/{Rijksregisternummer}/{BadgeAfdruk}/{printer}/{Image}",
defaults: new { Image = RouteParameter.Optional}
);
//test route to get string back
config.Routes.MapHttpRoute(
name: "apiTest",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
BadgeController.cs (единственный контроллер в проекте)
Первый метод - тот, который я собираюсь использовать в конечном итоге, ноtestmethod - это тот, который я использую для тестирования.
using BadgePrinter.CardTemplates;
using BadgePrinter.Interfaces;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
namespace BadgePrinter.Controllers
{
public class BadgeController : ApiController
{
//removed the first method since it was big and distracting.
// test method
[HttpGet]
public IHttpActionResult GetAllProducts()
{
return Ok("some product");
}
}
}
ссылка для тестового метода, который я использую: http://localhost:52011/api/BadgeController/Products/1
Я также пробовал эту ссылку, хотя это не должно иметь значения: http://localhost:52011/api/BadgeController/Products/1
Результат:
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:52011/api/BadgeController/Products/1'.",
"MessageDetail": "No type was found that matches the controller named 'BadgeController.cs'."
}
Для другого HttpRoute я продолжаю получать 404, но я буду в раю, если смогу заставить тест работать :) PS: я новичок втакого рода вещи (ASP.net и API), поэтому извините, если я идиот.