如何在REST Web服务中处理使用100继续?

时间:2012-02-06 06:35:52

标签: asp.net .net wcf rest azure

一些背景

我打算编写一个REST服务,它有助于促进多个客户端系统之间的协作。类似于git或hg如何处理事情,我希望客户端在本地执行所有合并,并且服务器拒绝新的更改,除非它们已与现有更改合并。

我想如何处理

我不希望客户在被告知需要先合并之前必须上传所有变更集。我想通过使用POST标题执行Expect 100 Continue来执行此操作。然后,服务器可以验证它是否可以根据标头信息接受更改集(在这种情况下对我来说并不难),并拒绝请求或将100 Continue状态发送给客户端,然后客户端将上载更改

我的问题

据我所知,到目前为止,ASP.NET不支持这种情况,当您在控制器操作中看到请求时,POST正文通常已经完全上传。我已经简要介绍了WCF REST,但是我还没有办法在那里做到这一点,他们的条件PUT示例在拒绝请求之前有完整的请求体。

我很高兴使用在.net上运行的任何替代框架,或者可以轻松地在Windows Azure上运行。

1 个答案:

答案 0 :(得分:0)

我不能推荐WcfRestContrib。它是免费的,它有很多abilities

但我认为你需要使用OpenRasta而不是WCF才能做你想要的事情。其中有很多内容,例如wikiblog post 1blog post 2。它可能需要很多东西,但它是一个真正专注于RESTful的.NET框架,而不是像WCF那样的RPC。它有能力处理标题,就像你问的那样。它甚至具有PipelineContributors,它可以访问整个调用上下文,可以暂停执行,处理重定向,甚至可以呈现与预期不同的内容。

编辑: 据我所知,这个isn't毕竟可能在OpenRasta中,因为“100 continue通常由托管环境处理,而不是由OR处理,所以不支持它,因为我们不没有机会在asp.net管道中回复“