C# http.NET服务器端http.request主体中发布的JSON为空
我在将JSON发布到我的web服务器时遇到问题。我有一个ASP.NET web应用程序在服务器上运行,该服务器利用属性路由来路由请求。以下是该项目的问题领域:C# http.NET服务器端http.request主体中发布的JSON为空,c#,json,node.js,http,asp.net-web-api,C#,Json,Node.js,Http,Asp.net Web Api,我在将JSON发布到我的web服务器时遇到问题。我有一个ASP.NET web应用程序在服务器上运行,该服务器利用属性路由来路由请求。以下是该项目的问题领域: [HttpPost] [Route("users/new")] public string PostDataModel([FromBody] dataModel jsonObj) { try { WebApiApplication.db.AddToDatabase(jsonObj); r
[HttpPost]
[Route("users/new")]
public string PostDataModel([FromBody] dataModel jsonObj)
{
try
{
WebApiApplication.db.AddToDatabase(jsonObj);
return "successfully inserted into database";
}
catch (Exception ex)
{
Tools.Logger.log("[POST DATA][ERROR] : " + ex.Message);
return ex.Message;
}
}
到目前为止,使用Postman手动发送POST请求,将JSON插入请求正文,并将内容类型设置为application/JSON,该函数成功地将JSON解析为指定的正确对象([FromBody]DataModel)。此外,我对DataModel中的所有属性都有访问器
这个问题来自于我的单元测试。我创建了一个Node.js项目来针对API进行一些单元测试。我正在使用http模块来实现这一点。在此提出请求:
req = http.request(options, (response) => {
var body = '';
response.on('data', (d) => {
body += d;
});
response.on('end', () => {
if (options.method == 'POST') {
options.body = JSON.stringify(options.body);
});
)};
“选项”参数定义为:
var options = {
method: 'POST',
host: customSite,
path: '/users/new',
headers: { 'Content-Type' : 'application/json' },
body: {
'UserId': "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
'UserName': "Testing Suite",
'Name': "Tester",
'Email': "tester@test.com",
'Password': "fake,",
'BirthDate': "1/1/0001 12:00:00 AM",
'NumberOfItems': 0,
'Links': [],
'TotalLikes': 100
},
}
现在,当我运行单元测试时,API抛出一个异常,该异常被捕获为:“对象引用未设置为对象的实例。”
我在单元测试中传递的JSON实际上是从我在Postman中使用的POST请求中复制和粘贴的,这很有效。我不知道是什么问题导致API在从我的Node.js单元测试命中时失败,在从Postman命中时成功。你能用C编写一个简单的单元测试来看看会发生什么吗?:-)今晚我会试试,我们的客户端应用程序是用Swift 3编写的,我们用它来处理所有HTTP请求。显然,Alamofire在正确解析传递给API的JSON方面没有问题