Маршрутизация по умолчанию:ASP.NET маршрутизации веб-API игнорирует любой адрес электронной {имя пользователя}
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
У меня есть этот кусок кода, который находится внутри контроллера.
/// <summary>
/// Gets all the information for a specific username
/// </summary>
/// <param name="userName"></param>
/// <returns></returns>
[Route("GetUser/{userName}")]
[HttpGet]
public List<SomeList> GetUserObject(string userName)
{
Trace.WriteLine(userName);
Trace.WriteLine("HIT THIS <-----------");
return userName.getList();
}
Я переименовал несколько вещей, которые не имеют отношения к делу, но это точная настройка.
Использование Почтальон, если я посылаю запрос к этому API по адресу:
http://localhost:3040/api/SomeController/GetInformation/[email protected]
он никогда не ударит метод, но если я удалю «.com» это ударит метод.
Почему он игнорирует «.com»?
Все, что угодно, кроме добавления к нему «.com».
EDIT **
Это не совсем работа, я попробовал следующее звено в списке, но это не совсем работает, потому что я считаю, что связь MVC и то, что я работаю с является Web API, некоторые маршрутизация и все обрабатываются по-разному, я не совсем в состоянии сопоставить различия.
это в Web.config
<rewrite>
<rules>
<rule name="Add trailing slash" stopProcessing="true">
<match url="(userName/.*\..*[^/])$"/>
<action type="Rewrite" url="{GetUser}/"/>
</rule>
</rules>
</rewrite>
Это в WebApiConfig.cs Это новый маршрут я добавил выше по умолчанию один
config.Routes.MapHttpRoute(
name: "GetUser",
routeTemplate: "api/{controller}/GetUser/{userName}/",
defaults: new
{
userName = RouteParameter.Optional
}
);
Это еще не работает , Что я делаю не так?
Хорошо, эта линия зафиксировал его:
<modules runAllManagedModulesForAllRequests="true"/> <!--Fix for IIS server trying to map to directories instead of URL when a '.' (period) is found in the route mapping.-->
возможно дубликат [Dot символ '' в MVC Web API 2 для запроса, например api/people/STAFF.45287] (http://stackoverflow.com/questions/20998816/dot-character-in-mvc-web-api-2-for-request-such- как-апи-люди-сотрудники-45287) –