Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Call web API string parameter

I have this function

[System.Web.Http.HttpGet]
[System.Web.Http.ActionName("StartProcess")]
public object StartProcess(string items)
{
    //do stuff
}

trying to call with

$.ajax({
     url: '/api/Details/StartProcess',
     type: 'get',
     contentType: 'application/json',
     data: items,
     success: function() {
         logger.log('Successful', "", "", true);
     },
     error: function(error) {
         var jsonValue = jQuery.parseJSON(error.responseText);
     });

Keep getting 404 error. The rest of my calls work but this is the first one that I need to send a parameter.

items is just a comma delimited string.

this is my route info.

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id=Urlameter.Optional }
);

Any ideas what I am missing?

like image 475
user2643709 Avatar asked May 03 '26 02:05

user2643709


1 Answers

you are getting 404 error because your routing table is not able to resolve the url "/api/Details/StartProcess"

In order to make the WebAPI routing work you need to modify the "MapHttpRoute()" function of route collection and not the "MapRoute()"

So please change the API routing as below (assuming you are using default api) and it should work fine.

    routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
    );
like image 134
wizzardz Avatar answered May 05 '26 23:05

wizzardz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!