我在 asp.net Learn网站上找到了这篇文章。我使用本文来帮助我创建一个 API 方法,以通过电子邮件而不是 id 在数据库中搜索。
但是,如果您看一下这篇文章,您将能够帮助我解决我的问题,如下所示:
我的控制器:
[HttpGet]
public string Details(string email);
[HttpGet]
[ActionName("Email")]
public HttpResponseMessage GetEmail(string email);
我的 WebApiConfig 类
config.Routes.MapHttpRoute(
name: "EmailApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
首先,我得到的Details方法的错误如下:
(错误 1 "MyApp.Controllers.UsersController.Details(string)" 必须 声明一个主体,因为它没有标记为抽象、外部或 部分D:\Abdulrhman A A\MyApp\Asp.net Web API\Controllers\UsersController.cs 40 27 MyAppApplication)
其次,我得到的GetEmail方法的错误如下:
(错误 2 "MyApp.Controllers.UsersController.GetEmail(string)"必须 声明一个主体,因为它没有标记为抽象、外部或 部分D:\Abdulrhman A A\MyApp\Asp.net Web API\Controllers\UsersController.cs 44 43 MyAppApplication)
本文提供了有关如何配置路由的示例。最后两个示例仅用于说明目的,它更像是伪代码,而不是工作代码。如果刚开始使用 C#,则这些最后的代码示例会令人困惑。
您收到的错误清楚地描述了正在发生的事情 - 您需要一个方法主体。要修复它,而不是在最后添加;
添加{}
并实际实现该方法:
[HttpGet]
public string Details(string email)
{
// Implement your method, so it returns string
}
[HttpGet]
[ActionName("Email")]
public HttpResponseMessage GetEmail(string email)
{
// Implement your method so it returns HttpResponseMessage
}