我有一个经典的WCF网络服务。几周前,为了满足客户需求,我将Rest管理添加到我的网络服务中。
但是,在本周初,另一位客户告诉我,它的系统只能管理XML-RPC。所以他需要通过这个协议连接到我的网络服务。
所以我发现了这个: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);
}
}
最后,我修改了我的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说他不了解子元素&x; xmlRpc&#39;。因此,当我尝试启动我的Web服务时,执行期间会出现相同的错误。
任何人都可以帮我在我现有的网络服务中使用Xml-Rpc吗?
有关信息,我的项目是在C#4中。
答案 0 :(得分:0)
我太傻了。
不是这个:
<add name="xmlRpc"
type="WsZendesk.XmlRpcEndpointBehaviorElement, WsZendesk" />
但是这个:
<add name="xmlRpc"
type="WsZendesk.XmlRpcEndpointBehaviorExtension, WsZendesk" />
对这个愚蠢的问题感到抱歉...... -_-