我实现了一个WebAPI Odata V3端点。然后,我使用Silverlight中的WCF数据服务客户端访问Odata端点。 GET,更新工作很棒。但是,当我尝试提交删除时,我看到使用Fiddler,客户端正在发送POST和X-HTTP-Method:DELETE而不是DELETE。
根据文档,默认行为应该是DELETE请求,但是覆盖使用.UsePostTunneling = true;在数据服务客户端上发送扩展方法。当我尝试设置UsePostTunneling = false时;身份验证(Negotiate)失败也使GETS失败。
使用Fiddler我可以提交DELETE请求并且它正确执行,因此服务器似乎正常工作。
默认情况下,什么会导致客户端发送POST而不是DELETE?
答案 0 :(得分:0)
我无法找到改变客户行为的方法。但是,我确实解决了我的问题。我所做的是覆盖服务器端的处理程序,如果请求是带有x-HTTP-Method的POST:标题中的Delete我将其更改为DELETE请求。这在此详述: http://www.hanselman.com/blog/HTTPPUTOrDELETENotAllowedUseXHTTPMethodOverrideForYourRESTServiceWithASPNETWebAPI.aspx