即使我在我的控制器中定义了 2 个专用的 HttpGet 操作,即使 URL 指定了 2 个不同的操作,也只有一个被调用
Even though I have 2 dedicate HttpGet Actions defined in my controller, only one gets called even when the URL specifies 2 different Actions
我正在尝试在我的服务器上为 http://docs.annotatorjs.org/en/v1.2.x/storage.html 中所述的 JS 插件开发 REST API。我需要开发的两个API如下:
索引:索引功能,路径为/annotations
,方法为get
。我已经在控制器注释中实现了这个(放置在名为 api 的目录中),如下所示:
[HttpGet]
public IList注解(long userID = 2)
搜索:再次使用路径为 /search
和方法为 get
的搜索功能。我在同一控制器中的实现如下:
[HttpGet]
public AnnotationSearchResults search(int count, string uri)
我面临的问题是,如果同时存在以下 URL:http://localhost:5555/api/Annotation/search?limit=20&uri=www.abc.com
和 http://localhost:5555/api/Annotation/annotations
方法 annotation
被调用,尽管我希望搜索方法是叫。我非常喜欢 web 开发,并且自从过去 2 天以来一直在努力获得这个 运行。如果这是一个非常基本和明显的问题,请原谅。
在您的 App_Start 文件夹中,有一个 WebApiConfig.cs 文件。这里的路由模板默认不包含动作。您将需要添加操作路线以获得所需的输出。
Web API 的默认路由是
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
添加一个 {action} 到 routeTemplate 如下所示,正确的动作 url 将被命中。
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我正在尝试在我的服务器上为 http://docs.annotatorjs.org/en/v1.2.x/storage.html 中所述的 JS 插件开发 REST API。我需要开发的两个API如下:
索引:索引功能,路径为
/annotations
,方法为get
。我已经在控制器注释中实现了这个(放置在名为 api 的目录中),如下所示:[HttpGet]
public IList注解(long userID = 2)
搜索:再次使用路径为
/search
和方法为get
的搜索功能。我在同一控制器中的实现如下:[HttpGet] public AnnotationSearchResults search(int count, string uri)
我面临的问题是,如果同时存在以下 URL:http://localhost:5555/api/Annotation/search?limit=20&uri=www.abc.com
和 http://localhost:5555/api/Annotation/annotations
方法 annotation
被调用,尽管我希望搜索方法是叫。我非常喜欢 web 开发,并且自从过去 2 天以来一直在努力获得这个 运行。如果这是一个非常基本和明显的问题,请原谅。
在您的 App_Start 文件夹中,有一个 WebApiConfig.cs 文件。这里的路由模板默认不包含动作。您将需要添加操作路线以获得所需的输出。
Web API 的默认路由是
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
添加一个 {action} 到 routeTemplate 如下所示,正确的动作 url 将被命中。
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}