使用WebApi 2.2。在我WebApiConfig.cs我:找不到提供控制器名称的路由以匹配请求URI
public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
configuration.Routes.MapHttpRoute(
name: "EnvironmentCreateAnnualTargetApi",
routeTemplate: "api/EnvironmentTargets/{WorkLocationGuid}/{UserGuid}/{Year}"
);
configuration.Routes.MapHttpRoute(
name: "EnvironmentUnitConversionApi",
routeTemplate: "api/Conversions/{ConvertFromMeasureId}/{ConvertFromAmount}/{ConvertToMeasureId}/{MeasureDefinition}",
defaults: new
{
ConvertFromMeasureId = RouteParameter.Optional,
ConvertFromAmount = RouteParameter.Optional,
ConvertToMeasureId = RouteParameter.Optional,
MeasureDefinition = RouteParameter.Optional
}
);
}
名为“EnvironmentCreateAnnualTargetApi”的路线是工作,但我不能让第二个工作,已经尝试了很多不同的东西,淘这个网站。
我的控制器是这样的:
[RoutePrefix("api/Conversions")]
public class ConversionsController : ApiController
{
然后到方法:
// GET: api/Conversions/7/5000/10/1
[HttpGet, ActionName("Get")]
[AllowAnonymous]
public double Get(int ConvertFromMeasureId, double ConvertFromAmount, int ConvertToMeasureId, int MeasureDefinition)
我一直有和没有在MapHttpRoute方法的默认设置试了一下。
我不断收到的错误是:
<Error>
<Message>No HTTP resource was found that matches the
request URI 'http://localhost:50000/api/Conversions/7/10000/10/1'.</Message>
<MessageDetail>No route providing a controller name was
found to match request URI
'http://localhost:50000/api/Conversions/7/10000/10/1'</MessageDetail>
</Error>
我不明白,我可能是错在这里得到。已尝试过的东西frommanydifferentanswers但没有更明智的。
假设Utilities.MeasureDefinitions是一个枚举,你是否尝试过将参数类型更改为int,然后手动转换为枚举体? –
也可以尝试使方法参数名称等同于路由器参数名称? –
实施了这两个建议,并相应地更新了我的问题。但是,仍然有返回相同的错误。我对此还是比较陌生 - 是否有某处我可以附加一个调试器,以便我可以尝试跟踪正在发生的事情,也许可以看到它在哪里下降,你知道吗? –