Web API 1 и маршрутизация
Я сделал проект, используя web api 2, но потом узнал, что сервер работает под управлением 2003. Поэтому я сейчас воссоздаю проект, используя web api 1 (.net 4).
Я размещаю маршрутизацию в App_Start\WebApiConfig
config.Routes.MapHttpRoute(
name: "ContactApi",
routeTemplate: "api/{controller}/{email}/{firstname}/{lastname}/{source}"
);
URL, который я использую,
http://localhost:64470/api/Contacts/GetId?email=user5@company.com&firstname=joe&lastname=user&source=wer
Это работало нормально в веб-API 2, но я получаю следующую ошибкуРесурс не может быть найден
Вот некоторые части класса контроллера
public class ContactsController : ApiController
public string GetId(string email, string firstname, string lastname, string source)
Есть идеи, что мне не хватает?
2 ответа
Ваш шаблон маршрута требует, чтобы параметры {email}, {firstName}, {lastName} и {source} были в пути URI. Замените свой маршрут с кодом ниже
config.Routes.MapHttpRoute(
name: "ContactApi",
routeTemplate: "api/{controller}"
);
И он должен достигать вашего метода GetId - параметры строки запроса не нужно указывать в маршруте.
Для вызова действия с URL-адресом, который вы используете, вам потребуется маршрут:
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}"
);
Лично я бы не стал этого делать. Я бы просто использовал маршрут по умолчанию:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
и затем вызовите APi, используя следующий URL:
http://localhost:64470/api/Contacts?email=user5@company.com&firstname=joe&lastname=user&source=wer