2014-09-25 54 views
0

我有一个经典的WCF web服务。几个星期前,为了回应客户的需求,我将休息管理添加到了我的web服务中。WCF + Xml-Rpc不起作用

但是,在一周的开始,另一个客户端对我说,它的系统只能管理XML-RPC。所以他需要通过这个协议连接到我的web服务。

所以我发现这一点:Configuring XML-RPC behavior for IIS-hosted .SVC file?

首先,我才能将它添加到我的项目编制的Microsoft.Samples.XmlRpc。这两个dll出现:Microsoft.Samples.XmlRpc & Microsoft.ServiceModel.XmlRpc

然后,我创建了一个XmlRpcEndpointBehaviorExtension类,与上面相同的帖子:

namespace WsZendesk 
{ 
    public class XmlRpcEndpointBehaviorExtension : BehaviorExtensionElement 
    { 
     protected override object CreateBehavior() 
     { 
      // this comes from Microsoft.Samples.XmlRpc 
      return new XmlRpcEndpointBehavior(); 
     } 

     public override Type BehaviorType 
     { 
      get { return typeof(XmlRpcEndpointBehavior); } 
     } 
    } 
} 

后,我建立了我的界面基于XML RPC:

namespace WsZendesk 
{ 
    [ServiceContract] 
    public interface IWsZendeskRpc 
    { 
     [OperationContract(Action = "wszendesk.GetUserIdFromBarcode")] 
     void GetUserIdFromBarcode(String sXmlIn, out String sXmlOut); 
    } 
} 

Finaly,我修改我的web.config为了让RPC:

<system.serviceModel> 
    <services> 
     <service name="WsZendesk.WsZendesk" behaviorConfiguration="WsZendeskServiceBehavior"> 
     <endpoint address="rest" behaviorConfiguration="restfulBehavior" 
      binding="webHttpBinding" bindingConfiguration="" name="RESTEndPoint" 
      contract="WsZendesk.IWsZendeskRest" /> 
     <endpoint address="xmlrpc" behaviorConfiguration="xmlRpcBehavior" 
      binding="webHttpBinding" bindingConfiguration="" name="RPCEndPoint" 
      contract="WsZendesk.IWsZendeskRpc" /> 
     <endpoint address="" behaviorConfiguration="" 
      binding="basicHttpBinding" bindingConfiguration="" name="SOAPEndPoint" 
      contract="WsZendesk.IWsZendesk" /> 
     </service> 
    </services> 
    <extensions> 
     <behaviorExtensions> 
     <add name="xmlRpc" 
      type="WsZendesk.XmlRpcEndpointBehaviorElement, WsZendesk" /> 
     </behaviorExtensions> 
    </extensions> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="restfulBehavior"> 
      <webHttp /> 
     </behavior> 
     <behavior name="xmlRpcBehavior"> 
      <xmlRpc /> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="WsZendeskServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 

Visual Studio说他不知道子元素'xmlRpc'。所以,当我尝试启动我的web服务时,在执行过程中出现相同的错误。

error in Visual Studio

error during execution

任何人都可以帮助我使用XML-RPC与我现有的web服务?

的信息,我的项目是在C#4

+0

不同于论坛的网站,我们不使用“谢谢“或”任何帮助表示赞赏“,或签名[so]。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts) – 2014-09-25 14:42:55

+0

“出现”的错误究竟是什么?它出现在哪里?你的意思是你得到一个异常吗?那么请发布完整的异常。 – 2014-09-25 14:43:50

+0

@John:对不起。它不会再出现了,我将编辑我的文章,截图为: – BaptX 2014-09-25 14:58:08

回答

0

我sooooooooo愚蠢。

这是不是这样的:

<add name="xmlRpc" 
type="WsZendesk.XmlRpcEndpointBehaviorElement, WsZendesk" /> 

但这:

<add name="xmlRpc" 
      type="WsZendesk.XmlRpcEndpointBehaviorExtension, WsZendesk" /> 

对不起这个愚蠢的问题...... -_-