У меня есть несколько служб REST WCF, которые принимают запросы объекта JSON и возвращают ответы объекта JSON.Получить запрос RAW String для службы REST WCF
Public Function SaveClientInformation(info as ClientInformation) As Boolean Implements IContactInformation.SaveClientInformation
'Here info object is the de-serialized JSON that was sent
'At this point we also need access to the RAW JSON string that was sent from the Java client
dim rawJSONRequest = ?
'We take the info object and persist it out postgress database
End Function
Мне нужно захватить необработанную строку JSON из метода веб-службы. В настоящее время у меня есть доступ к десериализованному объекту, но мне также нужна строка RAW JSON, которая была отправлена в веб-службу.
Я просмотрел документацию WCF и осмотрелся, к сожалению, это не представляется возможным. WCF не позволяет мне получить запрос RAW (строка), который был отправлен на сервер.
Я попытался создать WCF Message Interceptor, однако это не дает мне доступ к строке запроса RAW, также мне нужна эта строка RAW, доступная из метода веб-службы.
Мне нужен доступ к строке RAW, а также де-сериализованный объект JSON из метода веб-службы.
Возможно ли это в WCF?
Я знаю, что это может быть достигнуто с использованием нового API-интерфейса ASP.NET. но я не могу изменить наше приложение, так как все наши веб-службы построены поверх WCF REST (JSON), и они используются несколькими клиентами.
Запрос RAW требуется, поскольку на стороне клиента строка запроса RAW хэшируется Java и этот хеш отправляется в заголовке. Поэтому основной причиной доступа к этому запросу RAW является перерасчет хэша, чтобы проверить, не изменилось ли сообщение во время передачи.
FYI - Мы используем HTTP, но мы должны гарантировать, что сообщение не вмешивается, и это метод, который был реализован в нашей другой веб-службе Java, и нам нужно делать точные вещи в .NET. WCF REST тоже.
вы можете добавить больше деталей с кодом –
надеюсь, что пример кода достаточно. пожалуйста, дайте мне знать, что еще вам нужно, Большое вам спасибо за вашу помощь. –
нет строки запроса. В какой-то момент в конвейере WCF у вас есть байты запроса (byte []), которые затем считываются кодеком сообщений, а затем преобразуются в объект сообщения. Даже если вы получите доступ к этим байтам в перехватчике сообщений, это будет другой уровень, который не имеет ничего общего с уровнем бизнес-логики. Рассмотрите возможность изменения типа входных параметров на строку, если это возможно, и проанализируйте ее в JSON самостоятельно со стороны службы. – Mimas