Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# ASP.Net Web API参数为空_C#_Asp.net Mvc_Web Services_Asp.net Web Api - Fatal编程技术网

C# ASP.Net Web API参数为空

C# ASP.Net Web API参数为空,c#,asp.net-mvc,web-services,asp.net-web-api,C#,Asp.net Mvc,Web Services,Asp.net Web Api,我的服务使用ASP.NETWebAPI,这是从第三方应用程序调用的。当我在chrome postman中测试它时,它在localhost和部署的服务器中运行良好,但我在fiddler中尝试过,抛出它,字符串val总是空的,我应该添加其他内容吗?我不明白为什么它在《邮递员》中效果很好!有点疯狂了! 提前谢谢 public bool PostProperty([FromBody] string val) { try { var reader = n

我的服务使用ASP.NETWebAPI,这是从第三方应用程序调用的。当我在chrome postman中测试它时,它在localhost和部署的服务器中运行良好,但我在fiddler中尝试过,抛出它,字符串val总是空的,我应该添加其他内容吗?我不明白为什么它在《邮递员》中效果很好!有点疯狂了! 提前谢谢

public bool PostProperty([FromBody] string val)
{
    try
    {          
        var reader = new StringReader(val);
        var serializer = new XmlSerializer(typeof(property));
        var instance = (property)serializer.Deserialize(reader);
    }
}

将您的签名更改为

public async Task<bool> PostProperty()
{
    try
    {          
        var reader = new StringReader(await Request.Content.ReadAsStringAsync());
        var serializer = new XmlSerializer(typeof(property));
        var instance = (property)serializer.Deserialize(reader);
    }
}
如果执行第二个选项,则可能需要在设置中添加以下行:

config.Formatters.XmlFormatter.UseXmlSerializer = true;

所以您发送的请求在哪里?它是一个以字符串形式发送xml的第三方应用程序。那么请求在哪里?有人怎么能告诉你为什么一个请求在没有看到请求的情况下就没有绑定?请求是一个xml字符串,它可以从postman测试到localhost和my web Server。你需要发布实际的请求,并带有标题。“这是XML”并没有足够的信息来诊断这个问题。你是个天才,看起来这很有效!ThanksOpps说得太快了,现在在对streamreader的XML文档(1,1)更改中出现错误,现在在路径中获取非法字符。帮助@user2332277您采取了哪种方法?如果是第一个,那么请确保您正在客户端对流进行刷新。
config.Formatters.XmlFormatter.UseXmlSerializer = true;