Asp.net Web API 路由(按操作名称)修复



我在 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 
}

最新更新