当我尝试使用get url来访问我的API控制器时,出现以下错误:
找到多个符合要求的动作:
类型BlexzWeb.Controllers.ApiDevToolController上的IsStoreKeyValid
BlexzWeb.Controllers.ApiDevToolController类型上的GetPageIds
WebApiConfig.cs如下所示:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
//code bellow used to return json on api call
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings
.Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept",
"text/html",
StringComparison.InvariantCultureIgnoreCase,
true,
"application/json"));
}
}
控制器代码:
public class ApiDevToolController : ApiController
{
private bool IsValid { get; set; }
[HttpGet]
public IHttpActionResult IsStoreKeyValid(string storeName, string storeKey)
{
}
//get list of pageids
[HttpGet]
public IHttpActionResult GetPageIds(string storeName, string storeKey)
{
}
}
我用来打控制器的网址:
http://localhost:49817/api/apidevtool/isstorekeyvalid?storeName=test.myblexz.com&storeKey=fdesfhkfg5g437dfgh5u
我在这里做什么错?知道如何解决吗?
最佳答案
发生这种情况是因为您的第二个动作名称以Get ...开头,并且它具有与第一个动作相同的参数(IsStoreKeyValid(string storeName,string storeKey))
默认情况下,如果操作为HttpGet,则它将搜索以GetSomething开头的操作名称
并检查参数。更多信息MSDN
您需要更改第二个函数名称或需要使用属性路由
例如[Route(“ pageIds”)]
更多信息attribute routing