如何从javascript调用WCF-RIA Services方法

时间:2011-12-08 13:23:38

标签: javascript json wcf-ria-services

我们的域名服务具有以下“调用”操作:

public void SaveImportedUrl(CRIAImportedUrl i_importedUrl)

public class CRIAImportedUrl
{
    [Key]
    public Uri Url { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }

    // ... more properities
}

我想从javascript客户端(通过JSON端点)调用它。 通过查看来自silverlight客户端的调用(在fiddler中),我可以看到我需要POST到'SubmitChanges'网址。但是silverlight客户端使用二进制端点,我无法看到POST消息的内容是什么样的。

有谁知道怎么做?或者是否可以通过获取源代码或解码二进制编码的POST消息内容来“逆向工程”silverlight代码?

(我们设法成功调用'CRUD'操作(http://stackoverflow.com/questions/8179504/how-to-insert-entity-over-wcf-ria-services-json-endpoint),但是这个'调用“操作仍然是个谜”

EDIT ---

错误消息von server,wenn der POST message contents =

{
"Url":"http://www.bbc.co.uk/",
"Title":"a title",
"Description":"adesc"
}

{“ErrorCode”:500,“ErrorMessage”:“对象引用未设置为对象的实例。”,“IsDomainException”:false,“StackTrace”:“在System.ServiceModel.DomainServices.Hosting.ChangeSetProcessor。 System.ServiceModel.DomainServices.Hosting.SubmitOperationBehavior.SubmitOperationInvoker.InvokeCore(Object instance,Object [] inputs,Object []& outputs)“} 1 changeSetEntries)\u000d\u000a at System.ServiceModel.DomainServices.Hosting.ChangeSetProcessor.Process(DomainService domainService, IEnumerable 1 changeSetEntries)\ u000d \ u000a >

2 个答案:

答案 0 :(得分:0)

您的WCF端点配置是什么样的?我猜测它正在使用TcpBinary,因此你将无法对其进行“反向工程”,因为还有很多SOAP处理消息可供使用......

我建议添加一个为JSON配置的新WCF端点,这样您就可以从不同的端点的不同客户端调用完全相同的方法。

答案 1 :(得分:0)

Fiddler有一个插件可以让您检查SL客户端发送的二进制消息:WCF Binary Inspector