Я пытаюсь проверить веб-маршруты api, которые существуют inisde в моей области администрирования.Area webapi route не решен
Это определение маршрута в районе
[HttpPut]
[Route("timezone/put/{timezone}", Name = "PutTimeZone")]
[AllowAnonymous]
[ResponseType(typeof(void))]
public IHttpActionResult PutTimeZone(string timezone)
{
/*Action body*/
}
У меня есть префикс маршрута, как так [RoutePrefix ("админы/MISC")]
Вот мой маршрут тест
const string route = "/admins/misc/timezone/put/-120";
RouteAssert.HasApiRoute(_httpConfiguration, route, HttpMethod.Put);
_httpConfiguration.ShouldMap(HttpMethod.Put, route)
.To<MiscApiController>(HttpMethod.Put, x => x.PutTimeZone("-120"));
Когда я запустить тест, я получаю MvcRouteTester.Assertions.AssertionException : Expected 'Administration', got no value for 'area' at url '/admins/misc/timezone/put/-120'.
я прочитал в route tester wiki page
Если вы используете MVC области, то до тех пор, пока вы используете стандартное расположение пространств имен, имя области будет извлечено из вашего имени типа контроллера и испытание на область выбранный маршрутом. , например. если полное имя вашего контроллера -
MyWebApp.Areas.Blog.CommentController
, то ожидаемое название области будет be "Blog".
Но, откровенно говоря, это не дает мне никаких указаний относительно того, что делать, чтобы пройти мой тест. Мой вопрос - что мне не хватает?
но область маршрута специально предназначена для Asp.net Mvc, и, похоже, не вариант Webapi, правильно ли он используется внутри контроллера webapi. – Cizaphil
все равно попытался, и тест по-прежнему терпит неудачу с тем же сообщением об исключении, как показано выше. – Cizaphil
Я этого не понимал, и я не уверен, что ответ, извините. До сих пор я никогда не пытался использовать ApiController. Другая вещь, которая приходит на ум, является тем, что является вашим пространством имен ApiController? Если я правильно понимаю предоставленные вами документы wiki, ожидаемое пространство имен будет 'YourProjectName.Areas.Administration'. Можете ли вы проверить это? – davke