Коллеги всем доброго времени суток.
Нужна Ваша помощь.
Написал сервис с методом который принимает следующие параметры:
[OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)] public void StartProcessWithParameters(string processName, Dictionary<object, object> parameters) { try { _logService.RecInfo($"[AutobookingServicesPack]:[AbStartProcessManager]:[StartProcessWithParameters(string processName = '{processName}', Dictionary<string, string> parameters)]: ({parameters.Count()})"); ProcessSchemaManager processSchemaManager = (ProcessSchemaManager)UserConnection.GetSchemaManager("ProcessSchemaManager"); ProcessSchema processSchema = processSchemaManager.GetInstanceByName(processName); Process process = processSchema.CreateProcess(UserConnection); foreach (var parameter in parameters) { process.SetPropertyValue(parameter.Key.ToString(), parameter.Value); } process.Execute(UserConnection); } catch (Exception e) { _logService.RecInfo($"[AutobookingServicesPack]:[AbStartProcessManager]:[StartProcess(string processName = '{processName}', Dictionary<string, string> parameters)]:Exception: {e.Message}; {e.InnerException}"); } }
Через фидлер кидаю следующий json:
{
"processName":"AbListenCallAfterCancelationOrderProcess",
"parameters":{
"OrderId":"e3f25831-2482-4804-9564-72d6670634a5",
"CallsId":"e22be6b7-9cf7-ab57-3c0d-bdbfd6a0d168;3fcfab93-c395-7223-ee77-78a0a7efde9b;d2607c8b-7796-bb9b-f06f-aa5280240733;ea465baa-8205-914d-77e4-03a7a7249fda"
}
}
В логах СРМ следующее:
[AutobookingServicesPack]:[AbStartProcessManager]:[StartProcessWithParameters(string processName = 'AbListenCallAfterCancelationOrderProcess', Dictionary parameters)]: (0)
Видно, что processName десерелизовало, а вот parameters нет в Dictionary 0 элементов.
Подскажите в чем может быть проблема?
заранее благодарен.
Нравится
А еще лучше попробовать так
function toDictionary(obj) { var data = []; for (var key in obj) { data.push({ Key: key, Value: obj[key] }); } return data; } var _parameters = {} _parameters ["OrderId"] = "e3f25831-2482-4804-9564-72d6670634a5"; _parameters ["CallsId"] = "e22be6b7-9cf7-ab57-3c0d-bdbfd6a0d168;3fcfab93-c395-7223-ee77-78a0a7efde9b;d2607c8b-7796-bb9b-f06f-aa5280240733;ea465baa-8205-914d-77e4-03a7a7249fda"; var serviceData = { processName: "XrenyaNerabotaychayaProcess", parameters: toDictionary(_parameters) }; //serviceData это то что отправляется сервису
Чтобы получить в JSON.stringify(serviceData) чтото типа:
""processName":"XrenyaNerabotaychayaProcess",
"parameters":[
{"Key":"OrderId","Value":"e3f25831-2482-4804-9564-72d6670634a5"},
{"Key":"CallsId","Value":"e22be6b7-9cf7-ab57-3c0d-bdbfd6a0d168;3fcfab93-c395-7223-ee77-78a0a7efde9b;d2607c8b-7796-bb9b-f06f-aa5280240733;ea465baa-8205-914d-77e4-03a7a7249fda"}
]}"
Попробуйте может WebMessageBodyStyle.Bare вместо Wrapped
Попробуйте так
В описание метода:
StartProcessWithParameters(string processName, Dictionary<string, string> parameters)
Параметры как то так попытайтесь подставить
{
"processName":"AbListenCallAfterCancelationOrderProcess",
"parameters":
[{"OrderId" :"e3f25831-2482-4804-9564-72d6670634a5"},
{"CallsId": "e22be6b7-9cf7-ab57-3c0d-bdbfd6a0d168;3fcfab93-c395-7223-ee77-78a0a7efde9b;d2607c8b-7796-bb9b-f06f-aa5280240733;ea465baa-8205-914d-77e4-03a7a7249fda"}]
}
В CallsId будет строка список Id через ;
А еще лучше попробовать так
function toDictionary(obj) { var data = []; for (var key in obj) { data.push({ Key: key, Value: obj[key] }); } return data; } var _parameters = {} _parameters ["OrderId"] = "e3f25831-2482-4804-9564-72d6670634a5"; _parameters ["CallsId"] = "e22be6b7-9cf7-ab57-3c0d-bdbfd6a0d168;3fcfab93-c395-7223-ee77-78a0a7efde9b;d2607c8b-7796-bb9b-f06f-aa5280240733;ea465baa-8205-914d-77e4-03a7a7249fda"; var serviceData = { processName: "XrenyaNerabotaychayaProcess", parameters: toDictionary(_parameters) }; //serviceData это то что отправляется сервису
Чтобы получить в JSON.stringify(serviceData) чтото типа:
""processName":"XrenyaNerabotaychayaProcess",
"parameters":[
{"Key":"OrderId","Value":"e3f25831-2482-4804-9564-72d6670634a5"},
{"Key":"CallsId","Value":"e22be6b7-9cf7-ab57-3c0d-bdbfd6a0d168;3fcfab93-c395-7223-ee77-78a0a7efde9b;d2607c8b-7796-bb9b-f06f-aa5280240733;ea465baa-8205-914d-77e4-03a7a7249fda"}
]}"