【发布时间】:2018-01-13 16:30:59
【问题描述】:
我有一个 ASP.NET WebAPI 项目。在某个控制器中有一个 post 动作,它接受一个参数 [FromBody]。当我在本地调试项目时,接收到的参数很好,但是当我发布同一个项目时,接收到的参数为空。相同的 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 }
);
}
}
在其他控制器中甚至还有其他后期操作,它工作正常。我不知道为什么会这样,我的想法已经不多了。任何帮助表示赞赏。谢谢。
【问题讨论】:
-
没有更多信息很难找到答案。请阅读How to create a Minimal, Complete, and Verifiable example
-
好像反序列化body数据有问题。
VisitList的班级看起来怎么样?我不确定,但为了测试,应该可以将Post方法的参数类型更改为String。然后你应该看到发送了什么数据以及它是如何格式化的。 -
发布到哪里?您标记了 IIS6。已报废,不支持。升级您的网络服务器。
-
@ADyson 我希望我可以,它是一个生产服务器,我对此事没有发言权
标签: c# asp.net asp.net-mvc asp.net-web-api iis-6