【发布时间】:2016-08-31 22:52:33
【问题描述】:
我的控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
using System.Configuration;
namespace WebAPIDemo.Controllers
{
public class WebAPIDemoController : ApiController
{
public class Users
{
string connectionstring = ConfigurationManager.ConnectionStrings["MySqlConnectionString"].ConnectionString.ToString();
MySqlDataReader reader = null;
MySqlConnection connection;
public int Id;
public string FirstName;
[ActionName("GetUser")]
[Route("api/WebAPIDemo/GetUserById")]
[HttpGet]
public Users GetUserById(int UserId)
{
using (connection = new MySqlConnection(connectionstring))
{
MySqlCommand sqlCmd = new MySqlCommand();
sqlCmd.CommandType = CommandType.Text;
sqlCmd.CommandText = "Select * from User where id='"+ UserId + "' ";
sqlCmd.Connection = connection;
connection.Open();
reader = sqlCmd.ExecuteReader();
Users usr = new Users();
while (reader.Read())
{
usr.FirstName = (Convert.IsDBNull(reader["FirstName"]) ? "" : Convert.ToString(reader["FirstName"]));
connection.Close();
}
return usr;
}
}
}
}
}
web api 配置路由
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
using Microsoft.Owin.Security.OAuth;
using Newtonsoft.Json.Serialization;
namespace WebAPIDemo
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
//config.SuppressDefaultHostAuthentication();
//config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new {id = RouteParameter.Optional }
);
}
}
}
URI
http://localhost:53869/api/WebAPIDemo/GetUserById?id=96
错误信息
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:53869/api/WebAPIDemo/GetUserById?id=96'.
</Message>
<MessageDetail>
No action was found on the controller 'WebAPIDemo' that matches the request.
</MessageDetail>
</Error>
我是 web api 的新手 .. 身体能帮忙吗... 我找不到什么错误... 我已经阅读了一些谷歌的文章,但无法解决.......
【问题讨论】:
-
感谢 rboe ..... 但是即使在 WebAPIDemoController 中移动方法之后......仍然有错误......
-
要么将查询字符串更新为
?UserId=96,要么将操作参数更改为id。他们需要匹配才能匹配路由。 -
请把
[Route("~")]放在你的控制器上。
标签: c# asp.net-web-api2