2013-03-13 3 views
2

Вот мой метод:Передача нескольких скалярных параметров WebAPI через HttpClient.PostAsJsonAsync

[HttpPost] 
[ActionName("TestString")] 
public string TestString([FromBody] int a, [FromBody] int b, [FromBody] int c) 
{ 
    return "test " + a + " " + b + " " + c; 
} 

Есть ли способ, что я могу назвать этот метод с использованием HttpClient.PostAsJsonAsync

Я попытался это:

HttpResponseMessage response = client.PostAsJsonAsync("api/task/TestString","a=8,b=5,c=6").Result;

Но вот эта ошибка: StatusCode: 500, ReasonPhrase: 'Internal Server Error'

Заранее спасибо!

ответ

2

Я уверен, что вам разрешен только один тег [FromBody]. Попробуйте (добавьте свою собственную обработку ошибок и т. Д.):

[HttpPost] 
[ActionName("TestString")] 
public string TestString([FromBody] dynamic body) 
{ 
    return "test " + body.a.ToString() + " " + body.b.ToString() + " " + body.c.ToString(); 
} 

Это должно работать при условии,

+0

Спасибо, но он просто отправляет всю строку через «a = 6 & b = 5 & c = 2» и не разделяет переменные. Не отвечает на вопрос. – MattBH

+1

В ответ на вопрос - нет, вы не можете назвать свою функцию (ничем), потому что она всегда будет вызывать внутреннюю ошибку сервера. У вас не может быть более одного атрибута [FromBody] - он не нужен, поскольку HTTP POST имеет только одно тело. –

Смежные вопросы