У меня сейчас есть служба, размещенная на WCF, которая размещается самостоятельно и определяется следующим образом:
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, Method = "PUT", UriTemplate = "/device")]
void updateDeviceLevel(ZDevice device);
Класс ZDevice выглядит так:
public class ZDevice {
public bool? newPowerState { get; set; }
public int nodeId {get; set;}
}
У меня есть простой клиент Mac, который использует службу, используя сообщение http. Он отправляет {"newLevel":27,"nodeId":6}
в \devices
url, и .NET волшебным образом заполняет значения в объект ZDevice для меня. Здесь все хорошо.
Теперь, однако, мне нужно добавить некоторую базовую безопасность в микс. Я сделал это, добавив новый параметр и несколько «RequestWrapping» к вызову метода:
[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json, BodyStyle=WebMessageBodyStyle.WrappedRequest, Method = "PUT", UriTemplate = "/device")]
void updateDeviceLevel(string password, ZDevice device);
Сейчас я пытаюсь выяснить, какой синтаксис сервер ожидает от потребляющих клиентов. Я надеялся, что публикация в {"password":"somepwd", "newLevel":27,"nodeId":6}
сработает, но .NET больше не может «десериализовать» это в объект ZDevice, как это было раньше.
Кто-нибудь получил несколько предложений для меня?
Спасибо