我的api中有以下代码:
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
//Set default content to json
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
config.Routes.MapHttpRoute(
name: "DefaultApi2",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
以下是我尝试连接的conreoller和action方法:
[Authorize]
public class DeviceConnectionController : ApiController
{
[HttpGet]
public string Status(int deviceId)
{
string stats = "1234:";
stats += FSK_APNLink.ConnectionStatus.Connected.ToString();
return stats;
}
}
现在,以下获取请求为我提供了404:
http://localhost:50000/api/deviceconnection/status/45
但是如果我从action方法中删除参数,则以下命令正确执行:
http://localhost:50000/api/deviceconnection/status
答案 0 :(得分:2)
有一个名为id的可选参数,它由路径与方法参数列表匹配。唯一的方法参数称为deviceId
,因此它没有任何值。您需要在方法签名或路径模板中重命名参数。