У меня есть WCF REST / JSON Service, я создаю его, используя этот шаблон. В моем сервисе у меня есть метод
[WebInvoke(UriTemplate = "Create", Method = "*",RequestFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Bare)]
public void Create(PictureData pictureData)
{
var context = new EFDBContext();
context.PictureData.Add(pictureData);
context.SaveChanges();
}
PictureData это мои данные сущности, которые я пытаюсь сохранить в БД через EF.
В моем клиентском приложении WPF я пытаюсь вызвать этот метод:
using (var client = new HttpClient("http://localhost:8080/ScreenPictureService/Create"))
{
var dataContract = HttpContentExtensions.CreateJsonDataContract(pictureData);
client.Post("", dataContract);
}
Но ничего не происходит
- Я также пытаюсь использовать Method = "POST" в атрибуте WebInvoke
- Также я пытаюсь использовать адрес без «Создать» в HttpClient, а затем использовать его в client.Post в первом параметре
UPDATE
После того, как я попробую это
var dataContract = HttpContentExtensions.CreateJsonDataContract(pictureData, typeof (PictureData));
var client = new HttpClient();
using(var response = client.Post("http://localhost:8080/ScreenPictureService/Create", dataContract))
{
response.EnsureStatusIs(HttpStatusCode.OK);
}
Я получил плохой запрос 400
ОБНОВЛЕНИЕ 2
Я нашел свои проблемы:
Я использую JSON.NET для сериализации моего объекта, и когда я получаю байтовый массив, он преобразуется в формат base64, но моя служба ожидает байтовый массив - решено использовать список байтов.
И вторая проблема - я пытаюсь получить скриншот моего desctop с высокой степенью защиты, и у меня тот же ответ (Bad Request 400), если я изменяю разрешение изображения на 800x600, сервис работает хорошо, и мой вопрос - Как увеличить квоту на запрос сообщения. Я пытаюсь использовать внутри стандартного раздела Endpoint (web.config)
readerQuotas maxArrayLength = "2147483647" maxBytesPerRead = "2147483647" maxDepth = "2147483647" maxNameTableCharCount = "2147483647" maxStringContentLength = "2147483647"
Но это не работает