Я использую хостинг Owin с WebAPI2.
У меня есть два класса контроллера и с использованием атрибутов маршрутизации.
Один из них имеет следующую подпись:
[RoutePrefix("api/v1/devices")]
public class DeviceController : ApiController
{
[HttpPost]
[Route("")]
public async Task<HttpResponseMessage> DevicePresence()
{
...
}
[HttpGet]
[Route("updates/{deviceID}")]
public HttpResponseMessage GetDeviceUpdates(string deviceID)
{
...
}
}
Этот работает нормально, и срабатывают методы действия.
Другой Контроллер имеет нижнюю подпись:
[RoutePrefix("device/class")]
public class RemoteController : ApiController
{
[HttpGet]
[Route("remotehost")]
public HttpResponseMessage RemoteHost()
{
...
}
[HttpGet]
[Route("version")]
public HttpResponseMessage GetVersion()
{
...
}
}
Когда я пытаюсь подключиться к любому из них, я получаю ответ 503 (Служба недоступна).
Мой класс запуска запускается как показано ниже:
public class Startup
{
public static void Configuration(IAppBuilder app)
{
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.EnsureInitialized();
app.UseWebApi(config);
}
}
Я также пытался использовать обычную маршрутизацию, но проблема все еще та же.
config.Routes.MapHttpRoute(
name: "RemoteApi",
routeTemplate: "device/{controller}/{action}"
);
public class ClassController : ApiController
{
public HttpResponseMessage GetVersion()
{
...
}
}
Это также выбрасывает код состояния 503
Если я изменю префикс Route во втором контроллере, как показано ниже, он будет работать:
[RoutePrefix("api/v1/device/class")]
public class RemoteController : ApiController
{
...
}
Согласно моему требованию, я не мог изменить конечные точки.
Я не уверен, что здесь не так, и любая помощь будет принята с благодарностью.