Я занимаюсь разработкой ASP.NET Web API 2 с маршрутизацией атрибутов.У меня есть класс контроллера и два метода действия:
[RoutePrefix("api/settings")]
public class SettingsController : ApiController
{
[Route("{getVersion}")]
public async Task<IHttpActionResult> GetDBVersion(string PlatformID)
{
try
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
SqlManager sqlManager = new SqlManager();
DataTable dt = sqlManager.GetLocalDBVersion(PlatformID);
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return Ok(serializer.Serialize(rows));
}
catch (Exception ex)
{
return Content(HttpStatusCode.ExpectationFailed, ex.Message);
}
}
[Route("getBookingSetting/{PlatformID:int}")]
public async Task<IHttpActionResult> GetDBBookingSetting(int PlatformID)
{
try
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
SqlManager sqlManager = new SqlManager();
DataTable dt = sqlManager.GetBookingSetting(PlatformID.ToString());
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return Ok(serializer.Serialize(rows));
}
catch (Exception ex)
{
return Content(HttpStatusCode.ExpectationFailed, ex.Message);
}
}
Я вызываю первый метод действия по URL:
/api/settings/getVersion?PlatformID=1
, а второй по:
/api/settings/getBookingSetting?PlatformID=1
однако в обоих случаях первый метод действия вызывается каждый раз.Как я могу маршрутизировать между такими случаями, когда имена методов отличаются, но параметры имеют одно и то же имя и тип (или разные типы)?