Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我没有在我的WebAPI中接收反序列化数据?_C#_Asp.net_Json_Serialization - Fatal编程技术网

C# 为什么我没有在我的WebAPI中接收反序列化数据?

C# 为什么我没有在我的WebAPI中接收反序列化数据?,c#,asp.net,json,serialization,C#,Asp.net,Json,Serialization,我有一个简单的WebAPI应用程序。在我的控制器中,我有: [HttpPost] public ActionResult DoSomeWork(string stringParam, DTOObject dto) { // Some work gets done in here } 我有一个控制台应用程序可以这样做: HttpClient client = new HttpClient(); client.BaseAddress = new Uri(_context); client.

我有一个简单的WebAPI应用程序。在我的控制器中,我有:

[HttpPost]
public ActionResult DoSomeWork(string stringParam, DTOObject dto)
{
    // Some work gets done in here
}
我有一个控制台应用程序可以这样做:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(_context);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

var response = client.PostAsJsonAsync("ControllerPath/DoSomeWork", new object[]{someString, dtoObject}).Result;

我没有收到任何错误。当我的断点在控制器内部被点击时,它显示输入的字符串为NULL,DTO是一个完全填充的字符串,但带有默认值(1/1/1900、NULL等)。我觉得控制器没有正确地反序列化对象,但我有点不知道如何解决这个问题。有什么想法吗?

解决方案是因为我的控制器不是ApiController。一旦我将控制器改为从ApiController继承而不是从controller继承,一切都正常工作。

在这种情况下使用的一个好工具是Fiddler(免费下载)。它将自身设置为网络代理,您可以看到每个请求和服务器响应。在这种情况下,您将更容易看到客户端应用程序传输的确切数据。这可能不是您要寻找的方法,但我通常使用
string
参数和
Json.Decode()
Json.Encode()
进行反序列化。我只是觉得它更干净。另外,我建议您从WebApi控制器返回一条HttpResonseMessage,以便您可以控制标题(正确的响应代码等)。@DiskJunky-在这种情况下,我不能使用Fiddler,因为它现在在同一个框中。@jermny啊,那么我认为wtfsven的方法是尝试诊断问题的最佳方法。尝试对字符串进行(反)序列化,以确保这一方面正常工作