Я использую клиента WebApi для публикации в тестовом проекте WebApi. Мой метод почты на моем контроллере принимает единственный параметр (модель).Проводка сложных типов с помощью клиента WebApi
Если я отправляю сообщение с помощью json, все работает. Если я отправляю сообщение с использованием XML, параметр всегда равен нулю. Это ошибка?
var client = new HttpClient();
// on the server side, the loan param will be null
var response = client.PostAsXmlAsync("http://localhost.fiddler:54835/api/Loan/PostLoan", new Loan() {LoanId = 1}).Result;
// on the server side, the loan param is just fine
var response = client.PostAsJsonAsync("http://localhost.fiddler:54835/api/Loan/PostLoan", new Loan() { LoanId = 1 }).Result;
Единственная разница между 2 вызовами является то, что в одном я звоню PostAsXmlAsync, а в другом, я звоню PostAsJsonAsync.
Вот сиг для моего контроллера (я использую маршрутизации на основе действий)
[HttpPost]
public void PostLoan(Loan loan)
{
Debug.WriteLine(loan.LoanId);
}
// and here's my test model:
public class Loan
{
public int LoanId {get;set;}
}
// and here's my routing:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
Это отличная догадка и какая ошибка! Я знаю лучше, когда я работаю с WCF, но я не считаю, что webapi использует сериализатор Datacontract под обложками, поэтому, конечно, пространство имен имеет значение! Благодарю. – JMarsch