我正在为我的Windows Phone 8.1应用程序设置后端。我正在使用ASP.net WebApi创建RESTful API用于访问来自DB的数据,该DB设置在Windows Azure的上。ASP.net WebApi新注册的路线说,该请求无效
这是我的路线的样子:
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultNamedApi",
routeTemplate: "api/{controller}/{name}",
defaults: new { name = RouteParameter.Optional }
);
我想要做到的,是不使用的整数 accesing数据 - 我想用一个串访问数据。 这是代码从我的WebAPI控制器:
private SmokopediaContext db = new SmokopediaContext();
// GET api/Images
public IQueryable<ImageModel> GetImageModels()
{
return db.ImageModels;
}
// GET api/Images/5
[ResponseType(typeof(ImageModel))]
public IHttpActionResult GetImageModel(int id)
{
ImageModel imagemodel = db.ImageModels.Find(id);
if (imagemodel == null)
{
return NotFound();
}
return Ok(imagemodel);
}
public IHttpActionResult GetImageModel(string name)
{
ImageModel imagemodel = db.ImageModels.Find(name);
if(imagemodel == null)
{
return NotFound();
}
return Ok(imagemodel);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool ImageModelExists(int id)
{
return db.ImageModels.Count(e => e.ID == id) > 0;
}
最重要的代码是一个重载GetImageModel与字符串参数。
服务器返回错误,表示该URL的参数不正确:
<Error><Message>The request is invalid.</Message><MessageDetail>The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Http.IHttpActionResult GetImageModel(Int32)' in 'Smokopedia.Controllers.DragonController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.</MessageDetail></Error>
我应该纠正我的路线?
你给了我们正确的控制器吗?错误消息显示您未发布的“DragonController”和“GetDragonModel”。 – DavidG 2014-10-09 12:02:01
是的,我做到了。我只有一个名为DragonController的控制器,它有两个上面提到的方法。 – 2014-10-09 12:06:47
那么'GetDragonModel'在哪里? – DavidG 2014-10-09 12:07:35