WebAPI POST方法参数

时间:2018-01-13 16:31:00

标签: c# asp.net asp.net-mvc asp.net-web-api iis-6

我有一个ASP.NET WebAPI项目。在某个控制器中有一个后置动作,它接受一个参数[FromBody]。我在本地调试项目时收到的参数很好,但是当我发布同一个项目时,收到的参数为null。相同的WebAPI项目,同样的javascript客户端调用该操作。

Javascript(jQuery)请求:

var myRequest = $.ajax({
            type: 'POST',
            url: globalRoot + '/api/afternoonvisitcall',
            data: AfternoonVisitCalls,
            dataType: "text",
            success: function (resultData) {
                // resultData is false (for Published application)
            },
            error: function (error) {

            }
        });

CS控制器:

public class AfternoonVisitCallController : ApiController
{
   public IEnumerable<string> Get(){...}
   public object Get(string id){...}
   public bool Post([FromBody]VisitList AfternoonVisitCalls)
   {
        if (AfternoonVisitCalls != null)
        {
            Logger.Log("In POST api/afternoonvisitcall",
                         Logger.files.WebAPI_log,
                         " input arg AfternoonVisitCalls is NOT null");

            return AfternoonVisitCalls.SaveAfternoonListWithSamples();
        }
        else
        {
            Logger.Log("In POST api/afternoonvisitcall",
                         Logger.files.WebAPI_log,
                         " input arg AfternoonVisitCalls is NULL");
        }
        return false;
    }
}

CS RouteConfig.cs文件:

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

CS WebApiConfig.cs文件:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
           name: "myRoute",
            routeTemplate: "api/{controller}/{action}/{id}/{date}",
           defaults: new { id = RouteParameter.Optional }
       );

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

在其他控制器中甚至还有其他后期操作,它运行正常。我不知道为什么会这样,我的想法已经不多了。任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

有效!我不知道怎么做,但是我确定了 contentType:“application / json; charset = utf-8”和数据作为数据:JSON.stringify(avc_obj),而不是对象本身,在AJAX请求中。