尝试在 Visual Studio 2010 中使用 MVC RC4 Web API 建立一个新站点,但它似乎不起作用:参数值永远不会传递给该方法。
据我所知,我已经按照此处所述完成了所有操作:http ://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
路线配置:
routes.Clear();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {
id = RouteParameter.Optional
}
);
下面是常规的 MVC 路线,我也尝试过完全删除它以查看是否存在冲突,但没有任何区别。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
测试控制器:
public class TestController : ApiController
{
[HttpGet]
public int Double(int value)
{
return value * 2;
}
}
网址: http://localhost:1505/api/test/double/4
The parameters dictionary contains a null entry for parameter 'value' of
non-nullable type 'System.Int32' for method 'Int32 Double(Int32)' in
'MyAppName.Controllers.TestController'. An optional parameter must be a
reference type, a nullable type, or be declared as an optional parameter.
啊。这很简单,不是吗?但似乎没有任何结果导致参数被映射。我也试过了
http://localhost:1505/api/test/double?id=4
没有不同。如果我让参数接受空值,例如
public int Double(int? value)
它运行,但value
始终为空。
我究竟做错了什么?