Restful API GET失败'参数字典包含非可空类型参数'id'的空条目''

Yec*_*ats 0 c# rest web-services

我收到以下错误:

参数字典包含非可空类型'System.Int32'的参数'id'的空条目,用于'RecipeTracker.Controllers.StandardDirectionsController'中的方法'System.String Get(Int32)'.可选参数必须是引用类型,可空类型,或者声明为可选参数.

我在我的全局文件中定义了这个:

    protected void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RouteTable.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = System.Web.Http.RouteParameter.Optional });
    }
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

    App_Data.databaseDataContext _context = new App_Data.databaseDataContext();
    // GET api/<controller>
    public List<string> Get()
    {
        var direction = (from d in _context.ViewStandardDirections("-1")
                         select d.Direction);

        return direction.ToList();
    }

    // GET api/<controller>/5
    public List<Models.DirectionChoices> Get([FromUri]string q)
    {
        var choices = (from i in _context.ViewStandardDirections(q)
                       select new Models.DirectionChoices
                       {
                           text = i.Direction
                       });
        return choices.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

这是我尝试过但失败的网址:

http://localhost:9328/api/standarddirections/heat
Run Code Online (Sandbox Code Playgroud)

如果我删除/ heat部分,那么它会查询数据库就好了.我根据另一篇帖子建议添加了[FromUri],但它的行为与没有它的行为相同.

Hen*_*man 5

参数名称必须与路径匹配:

 //public List<Models.DirectionChoices> Get([FromUri]string q)
   public List<Models.DirectionChoices> Get([FromUri]string id)
Run Code Online (Sandbox Code Playgroud)