Я пытаюсь реализовать метод Options в контроллере моей веб-службы, который вернет сообщение, содержащее допустимые методы HTTP для конечной точки URI, связанной с контроллером. Метод "Мои параметры" выглядит примерно так:
public HttpResponseMessage Options()
{
var resp = new HttpResponseMessage();
resp.Content = new StringContent("");
var apiExplorer = GlobalConfiguration.Configuration.Services
.GetApiExplorer();
foreach (ApiDescription api in apiExplorer.ApiDescriptions)
{
resp.Content.Headers.Add("Allow", api.HttpMethod.Method);
}
return resp;
}
Я пробовал описанный выше метод в совершенно новом проекте Web Api (implication: unaltered routing) внутри контроллера с методами Get, Post и Delete. Как и ожидалось, возвращается ответ "Разрешить: GET, POST, DELETE". Однако у меня возникают проблемы с добавлением этого в более крупный проект, над которым я работаю. В более крупном проекте список ApiDescriptions в ApiExplorer не содержит никаких элементов. Почему это? Я подозреваю, что это связано с пользовательской маршрутизацией, которая была реализована, хотя единственной основой для этого подозрения является следующая ссылка:
http://forums.asp.net/t/1821651.aspx/1
Кто-нибудь еще испытал этот пустой список ApiDescription? Если да, то нашли ли вы лекарство?
Примечание. Я использую MCV 4 RC