首页 > 解决方案 > WCF 方法在其 HTTP 动词为 PUT 或 DELETE 时被调用两次

问题描述

我有一个从 AJAX/JS 调用的具有多个端点的 WCF 服务。一切正常,除非我去我的日志表。我将对该 wcf 服务的每个调用都存储在一个表中,并且我注意到,如果用于调用方法的动词是 PUT 或 DELETE,则该方法会被调用两次。当然,它对数据没有影响,因为 PUT 和 DELETE 应该是幂等的(我制作了相应的存储过程)。

挖掘这个问题,我用一种方法将 PUT 更改为 POST ,然后只调用一次。改回PUT,又被调用了两次。所以它不能与 DataContracts 相关,正如我在另一篇文章中所读到的。我使用了 SVCTraceViewer 并没有出现任何意外,当然除了两次调用。我还必须补充一点 1) 未安装 WebDav Publishing 2) 我已经检查了 IIS 并且 svc 处理程序已授权所有动词 尽管如此,我越来越相信这是一个 IIS 问题,但我不知道去哪里看. 任何的建议都受欢迎。感谢您花时间阅读这篇文章......并考虑解决我的问题。

标签: wcfiis

解决方案


好的,找到了。以为我会发布答案:我正在使用响应状态代码 204 来放置和删除成功的请求。但是,似乎代码 204 要求页面保留并实际上第二次请求相同的 url。将其更改为 202 :问题已解决。向堆栈 o 致以最诚挚的问候。


推荐阅读