I feel I have the routes, controller and the call correct, but still cannot figure out why I am getting the 'Multiple actions' error. The controller itself makes call to a service bus, but I cannot get it to hit my breakpoint for GetJob. Any ideas?
Route:
public class WebApiInitializer : IInitializableModule
{
public void Initialize(InitializationEngine context)
{
RouteTable.Routes.MapHttpRoute(
"webapimethodroutes",
"api/msi/{controller}/{action}",
defaults: new {}
);
}
}
My Job Controller:
public class SBJobController : ApiController, IJobsController
{
[HttpPost]
public CreateJobResponse CreateJob(CreateJobRequest request)
{
return BusProxy.Call<CreateJobRequest, CreateJobResponse>(request);
}
[HttpPost]
public GetJobResponse GetJob(GetJobRequest request)
{
return BusProxy.Call<GetJobRequest, GetJobResponse>(request);
}
}
My service call in angular:
function getJobs(pRequest) {
var request = pRequest || {
'Ids': [],
'JobNumbers': [],
'PageNumber': 1,
'PageSize': 20,
};
return $http.post('/api/msi/SBJob/GetJob', request).error(function (data, status, headers, config) {
//logError(data);
});
}
The request objects:
public class CreateJobRequest : RequestBase
{
public JobEntity Job { get; set; }
public AddressEntity Address { set; get; }
}
public class GetJobRequest: RequestBase, IPageable
{
public int PageNumber { set; get; }
public int PageSize { set; get; }
public List<Guid> Ids { set; get; }
public List<string> JobNumbers { set; get; }
public Guid ChildOfCustomer { set; get; }
public Guid ChildOfContact { set; get; }
public JobTypeEnum JobType { get; set; }
}
The exact error I am getting:
{
"Message": "An error has occurred.",
"ExceptionMessage": "Multiple actions were found that match the request: \r\nCreateJob on type MSI.ServiceBus.ServiceControllers.SBJobController\r\nGetJob on type MSI.ServiceBus.ServiceControllers.SBJobController",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}
GetJobRequest
andCreateJobRequest
objects look like? I think that maybe they both match your request object – Sam I am says Reinstate Monica