Мне действительно нужна помощь.C# Odata WebApi Список элементов в сообщении
Im кодирует небольшую программу WebApi.
В то время как тестирование устройства я заметил, что я не могу отправить список элементов в свой метод.
Во-первых, посмотрите на мой Unit Test:
[TestMethod]
public async Task PostWithExpandoObjectSerilasationToDataType()
{
//Define an imaginary Car Object
List<dynamic> listExpando = new List<dynamic>();
dynamic obj1 = new ExpandoObject();
obj1.Attribute = "PS";
obj1.DataType = "Integer";
obj1.EntityId = "3";
obj1.DefaultValue = "";
dynamic obj2 = new ExpandoObject();
obj2.Attribute = "Color";
obj2.DataType = "Text Only";
obj2.EntityId = "3";
obj2.DefaultValue = "";
dynamic obj3 = new ExpandoObject();
obj3.Attribute = "Km";
obj3.DataType = "Number";
obj3.EntityId = "3";
obj3.DefaultValue = "1.3";
listExpando.Add(obj1);
listExpando.Add(obj2);
listExpando.Add(obj3);
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
javaScriptSerializer.RegisterConverters(new JavaScriptConverter[] { new ExpandoJsonconverter() });
string jsonOfTest = javaScriptSerializer.Serialize(listExpando);
// arrange
UnityContainer container = UnityConfig.RegisterComponents();
var start = new Startup(container);
using (TestServer server = TestServer.Create(builder => start.Configuration(builder)))
{
using (var client = new HttpClient(server.Handler))
{
HttpContent content = new StringContent(jsonOfTest, Encoding.UTF8, "application/json");
var request = new HttpRequestMessage
{
RequestUri = new Uri("http://testserver/odata/Attributes"),
Method = HttpMethod.Post,
Content = content
};
string jsonContent = content.ReadAsStringAsync().Result;
request.Headers.Add("Prefer", "return=representation");
// act
HttpResponseMessage response = await client.SendAsync(request);
Attributes result = response.Content.ReadAsAsync<Attributes>().Result;
// assert
Assert.IsNotNull(response);
Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
Assert.IsNotNull(result, "No result content found");
Assert.IsNotNull(result.Attribute);
}
}
}
Следующая вот мой Сообщение Метод:
public IHttpActionResult Post([ModelBinder]IEnumerable<Attributes> att)
{....}
Когда дело доходит до сообщения Method ДТО все дни нуль
При попытке службы с отдыхом я получаю это сообщение:
«message»: «Collection (EAVService.Entities.Attributes) не является типом объекта. Только типы сущностей поддерживаются.»
гугла и пробовали разные вещи, но я не нашел рабочий раствор
Любой, кто может помочь мне решить мою проблему? :)
С наилучшими пожеланиями Андре
Ох и b путь. При отладке это запрос JSON я могу найти: "[{\" Атрибут \ ": \" PS \», \ "DataType \": \ "Integer \", \ "EntityId \": \ "3 \", \ "DefaultValue \": \ "\"}, {\ "Attribute \": \ "Color \", \ "DataType \": \ "Только текст \", \ "EntityId \": \ "3 \", \ "DefaultValue \": \ "\"}, {\ "Атрибут \": \ "км \", \ "DataType \": \ "Число \", \ "EntityId \": \» 3 \ ", \" DefaultValue \ ": \" 1.3 \ "}]" –
Ваш тест не является единичным тестом; это тест интеграции. Единичный тест будет создавать экземпляр соответствующего контроллера и сразу же вызвать «Почта». – lencharest