Некоторый фон
Я планирую написать службу REST, которая поможет облегчить сотрудничество между несколькими клиентскими системами. Подобно тому, как git или hg обрабатывают вещи, я хочу, чтобы клиент выполнял все слияния локально, а сервер отклонял новые изменения, если они не были объединены с существующими изменениями.
Как я хочу справиться с этим
Я не хочу, чтобы клиентам приходилось загружать все свои наборы изменений, прежде чем им сказали, что им нужно объединиться в первую очередь. Я хотел бы сделать это, выполнив POST
с заголовком Expect 100 Continue
. Затем сервер может проверить, что он может принять наборы изменений на основе информации заголовка (в данном случае это не сложно для меня) и либо отклонить запрос, либо отправить статус 100 Continue
клиенту, который затем загрузит изменения.
Моя проблема
Насколько мне удалось выяснить, ASP.NET не поддерживает этот сценарий, к тому времени, когда вы видите запрос в действиях вашего контроллера, тело POST обычно уже полностью загружено. Я кратко посмотрел на WCF REST, но я так и не смог найти способ сделать это, их пример условного PUT имеет полное тело запроса перед тем, как отклонить запрос.
Я рад использовать любую альтернативную инфраструктуру, которая работает в .net или может быть легко настроена для работы в Windows Azure.