我一直在努力研究WCF Json-Rpc Service Model。我对 WCF 和 WCF 可扩展性相当陌生,但最后我现在能够处理来自 Web 浏览器的请求 :) 总而言之,我现在已经实现了一个端点行为、一个操作选择器和一个消息格式化程序。
您可以在 MSDN 论坛上的这篇文章中找到最新的源代码。
我现在正在尝试为它创建一个 WCF 客户端,但我遇到了以下错误:
Manual addressing is enabled on this factory, so all messages sent must be pre-addressed.
这就是我创建客户的方式:
private int communicationTimeout = 10;
private int communicationPort = 80;
private string jsonRpcRoot = "/json.rpc";
public void InitializeClient()
{
Uri baseAddress = new UriBuilder(Uri.UriSchemeHttp, Environment.MachineName, communicationPort, jsonRpcRoot).Uri;
EndpointAddress address = new EndpointAddress(baseAddress.AbsoluteUri);
ChannelFactory<IJsonService> channelFactory = new ChannelFactory<IJsonService>(new WebHttpBinding(), address);
channelFactory.Endpoint.Behaviors.Add(new JsonRpcEndpointBehavior());
IJsonService typedProxy = channelFactory.CreateChannel();
int a = typedProxy.StartTransport(10);
}
这是我的(测试)服务合同。我尽可能简单
[ServiceContract(Namespace = "")]
public interface IJsonService
{
[OperationContract]
IList<Mission> GetMissions();
[OperationContract]
int StartTransport(int missionId);
[OperationContract]
int TransportCompleted(int missionId);
}