我正在使用带有 WebAPI2 的 Owin 自托管。我有两个控制器类并使用属性路由。其中之一具有以下签名:
[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(服务不可用)响应。
我的 Startup 类初始化如下:
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
{
...
}
根据我的要求,我无法更改端点。
我不确定这里出了什么问题,任何帮助将不胜感激。