我在我的web项目中实现了AttributeRouting和WebApi。
我尝试将http://localhost/apis/test?adminId=yyy
之类的网址路由到GetSomeInfo
动作。但是我遇到了一些麻烦,网址http://localhost/apis/test
和http://localhost/apis/test?adminId=yyy
都转到了行动GetEntity
。它似乎无法识别参数adminId
,它认为url中没有参数。事实证明,转到GetEntity
行动。谁能帮我?感谢。
到目前为止我所做的事情如下所示,它不起作用。
[RoutePrefix("apis/test")]
public class SampleController : ApiController
{
[HttpGet]
[GET("")]
public string GetEntity([FromUri]string name = null, [FromUri]string id = null)
{
....
}
[HttpGet]
[GET("")]
public string GetSomeInfo([FromUri]string adminId)
{
....
}
}
被修改
global.asax
中的路线图代码如下。我发现网址http://localhost/api/Sample?adminId=2BD48CF9-95EB-48D2-A1B2-1AFA273E586D
可以路由到GetSomeInfo
操作。没有任何参数的网址http://localhost/api/Sample
路由到GetEntity
。这正是我想要的。我的问题是为什么RoutePrefix
和FromUri
不起作用?
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Login", id = UrlParameter.Optional }
);
答案 0 :(得分:1)
因为,您需要在global.asax.cs中定义更多路由。看到这个,Single controller with multiple GET methods in ASP.NET Web API