2013-12-16 157 views
0

我正在为我的服务使用ASP.Net Web API,这是从第三方应用程序调用的。当我在Chrome邮递员中测试它时,它在localhost和部署的服务器上工作正常,但我已经在提琴手中尝试过,抛出它并且字符串val总是空,我应该添加其他东西吗?我不明白为什么它在邮递员工作正常!有点疯了,这个! 在此先感谢ASP.Net Web API参数为空

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

那么...你发送的请求在哪里? –

+0

它的第三方应用程序发送xml作为字符串 – Simon

+0

好吧。那么请求在哪里?人们应该如何告诉你为什么一个请求没有看到请求就不会绑定? –

回答

2

更改签名是

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; 
+0

你是一个天才,看起来像是工作过!感谢 – Simon

+0

Opps说话太快了,现在在XML文档中出现错误(1,1) – Simon

+0

更改为流式读取器,现在在路径中获取非法字符。帮助! – Simon