您的方法没有多大意义,为什么要从以 Get.... 开头的方法返回 void?
此外,这些路线:
http://example.com/customers/internalId=34
http://example.com/customers/externalId='JohnDoe
从 MVC/Web API 的角度来看是无效的。他们应该是这样的:
http://example.com/customers?internalId=34
http://example.com/customers?externalId=John
默认 Web API 路由应区分两者并将其路由到不同的操作。
编辑:
使用以下模板创建操作:
[HttpGet]
public string InternalId(int id)
{
return id.ToString();
}
为 Web Api 定义路由:
config.Routes.MapHttpRoute(
name: "Weird",
routeTemplate: "{controller}/{action}={id}",
defaults: new { id = RouteParameter.Optional }
);
这允许您编写:
http://localhost:7027/values/internalId=12
试试看...
然后你可以添加另一个方法:
[HttpGet]
public string ExternalId(string id)
{
return id;
}
和这个:
http://localhost:7027/values/externalId=bob
也会起作用。
很明显,我的控制器的名称是 ValuesController,因为我刚刚使用默认的 Web Api 模板对此进行了测试。