あなたのメソッドはあまり意味がありません.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 ルーティングでは、2 つを区別し、異なるアクションにルーティングする必要があります。
編集:
次のテンプレートを使用してアクションを作成します。
[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
同様に機能します。
デフォルトの Web Api テンプレートでこれをテストしたばかりなので、コントローラーの名前は明らかに ValuesController です。