2014-09-25 38 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" /> 

對不起這個愚蠢的問題...... -_-