Работя върху asp.net web api. Опитвам се да определя маршрута по подразбиране за моя проект във файла global.asax като,
localhost:45678/api/Products
Но аз не намерих формат, подобен на asp.net mvc маршрут модел като
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
Винаги ме пренасочва към Начална страница (HomeController). моля те ме насочи.
Отговори:
9 за отговор № 1Проверете своето RouteConfig
класа във вашия App_Start
папка. Трябва да видите маршрута по подразбиране, под който можете да промените.
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
РЕДАКТИРАНЕ
След като прочетох вашите коментари, мисля, че проблемът не е в маршрутите ви. Не съм сигурен защо бихте го направили искам за да го направите, но просто трябва да посочите началния URL адрес на вашия проект. Щракнете с десния бутон върху вашия уеб проект - щракнете Имоти - щракнете върху мрежа раздел - под Старт Действие изберете Начален URL адрес и влизай http://localhost:45678/api/Products
в кутията. Запазете проекта си и стартирайте отново. Той трябва да започне на новото място.
4 за отговор № 2
Проблемът може да е често срещаната грешка, в която влизат почти много хора.
Фактът тук е, че всички маршрути се събират под System.Web.Routing.RouteTable.Routes
колекция независимо от рамката, която използвате. Така че, ако поставите маршрута по подразбиране ASP.NET MVC преди маршрута на ASP.NET Web API, маршрутът на ASP.NET Web API никога няма да бъде сканиран, тъй като MVC маршрутът ще бъде съвпадение.
Предполагам, че това е случаят тук, като погледнете какво сте предоставили досега. Ако това не е така, качете пълното решение там някъде и хората могат да имат пълен поглед.
1 за отговор № 3
Всъщност, ако сме в състояние да настроиммаршрут по подразбиране в Properties-> web-> start location. тогава каква е нуждата от маршрутни таблици, персонализирани маршрути, RegisterRoutes във файла global.asax. Опитах се по този начин
в началото изглежда така,
routes.MapHttpRoute(
name: "Default Api",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Сега искам да направя localhost:xxxx/api/products
като маршрут по подразбиране за моя уеб api тогава,
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/Products/{id}",
defaults: new { controller = "Products", id = RouteParameter.Optional }
);
Но резултатите от никаква полза.
0 за отговор № 4
[EDIT: Моят отговор е същият като Кевин "
Искате да кажете, че когато стартирате проекта от Visual Studio, той отваря браузър към началната страница на проекта?
Шаблонът за проект на Web API съдържа MVC контролер плюс контролер за Web API.
URI "http: // localhost: xxxx /" отива на MVC контролера, докато "http: // localhost: xxx / api / products" отива в контролера на API.
Когато стартирате проекта във Visual Studio, той ще премине към "http: // localhost: xxxx" по подразбиране. При нормална работа клиентът би поискал URI, който иска.
Можете да промените настройките на Visual Studio под Project Properties / Web / Start Action.
0 за отговор № 5
Мисля, че сте танцували около решението, но просто сте пропуснали знака. Опитайте тази:
Уверете се, че се обаждате GlobalConfiguration.Configure (WebApiConfig.Register); във вашия Global.asax.cs.
в
WebApiConfig.Register()
Задайте маршрута по подразбиране като:route.MapHttpRoute (име: "DefaultApi", routeTemplate: "api /{Контролер}/ {id} ", по подразбиране: нов {controller =" Продукти ", id = RouteParameter.Опционален});
В настройките на вашия уеб проект се уверете, че сте задали свойството „Start Url“ като:
Localhost: 45678
Късмет.
0 за отговор № 6
Рестартирането на VS с разрешение на администратора разреши този проблем за мен. Информация за околната среда: - ОС: Windows 10 (64-битов) - Визуално студио: 2017г.