我使用WCF数据服务进行CRUD操作。我有一个远程服务和许多客户端(计算机)。某些客户端在所有编辑操作上重新发生错误(上下文有实体,我们现在编辑它)。返回的异常包含下一条消息:“您的浏览器发送了一个使用未知方法的请求(MERGE)”。所有客户端都使用Windows 7和Framework 4.5。这可能是什么原因?
服务有一个初始化方法:
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.UseVerboseErrors = true;
config.SetEntitySetAccessRule("doc", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
}
UPD1:当在管理员帐户下运行客户端应用程序(即管理员可以编辑实体且没有错误)时,发现错误消失。也许是ClickOnce部署中的问题。
UPD2:使用代理服务器的原因。研究继续......
答案 0 :(得分:0)
解决了代理服务器(http://msdn.microsoft.com/en-us/library/dd541471.aspx)对WCF数据服务和HTTP请求(如HTTP MERGE)锁定的问题。 决定使用隧道传输到客户端服务代理类的一个C#行:
docService.UsePostTunneling = true;