【问题标题】:ASP.Net Web API Parameter is null [closed]ASP.Net Web API 参数为空 [关闭]
【发布时间】:2013-12-18 00:46:16
【问题描述】:

我正在为我的服务使用 ASP.Net web api,它是从第三方应用程序调用的。当我在 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);
    }
}

【问题讨论】:

  • 那么...您发送的请求在哪里?
  • 它是一个以字符串形式发送 xml 的第三方应用程序
  • 好的。那么请求在哪里呢?有人应该如何告诉你为什么没有看到请求就无法绑定?
  • 请求是一个xml字符串,它可以从邮递员到本地主机和我的网络服务器进行测试
  • 您需要发布带有标头的实际请求。 “它是 XML”信息不足以诊断问题。

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


【解决方案1】:

将您的签名更改为

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);
    }
}

public bool PostProperty([FromBody] property val)
{

}

如果您执行第二个选项,您可能需要在设置中添加以下行,

config.Formatters.XmlFormatter.UseXmlSerializer = true;

【讨论】:

  • 你是个天才,看起来成功了!谢谢
  • Opps 说得太早了,现在得到 There is an error in XML document (1, 1)
  • 更改为流式阅读器,现在路径中出现非法字符。,求助!
  • @user2332277 您采用了哪种方法?如果是第一个,请确保您在客户端的流上执行 Flush。
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 2015-07-14
  • 2017-02-06
  • 1970-01-01
  • 2020-10-30
相关资源
最近更新 更多