bob.mazzo
bob.mazzo

Reputation: 5627

How to return an xml response from a WCF Service

I'm not fluent in WCF Services so I'm struggling to return XmlElement as the return type.

I'm getting the message from the WCF Test Client (running in debug mode):

The operation is not supported from the wcf test client because it uses type XmlElement.

[ServiceContract]
public interface IClientService
{

    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Xml)]
    XmlElement GetClientXml(int value);

}

namespace testWCF
{
    public class testSvc: IClientService
    {

        public XmlElement GetClientXml(int value)
        {
            string appDir = AppContext.BaseDirectory;
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(appDir + @"Xml\ResponseTempl.xml");
            return xDoc.DocumentElement;
        }

    }
}

I've referred to this as well but it might be too old, as I'm using 4.6.1 framework: Returning XML From a WCF Service

my Web.Debug.config file :

<?xml version="1.0" encoding="utf-8"?>

<!-- For more information on using web.config transformation visit https://go.microsoft.com/fwlink/?LinkId=125889 -->

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.web>    
  </system.web>

  <system.serviceModel>
    <services>
      <service name="AucklandRegionalPatientWCF.PatientDemographicService" >

        <!-- these endpoint are necessary to return SOAP service -->
        <endpoint address=""
                     binding="basicHttpBinding"
                     contract="AucklandRegionalPatientWCF.IPatientDemographicService" />
        <endpoint address="mex"
                  contract="IMetadataExchange" binding="mexHttpBinding"/>

        <!-- REST service return xml -->
        <!--To call this endpoint use: [service].svc/xml/[method_Name]-->
        <endpoint address="xml"
                  binding="webHttpBinding" behaviorConfiguration="xmlBehavior"
                  contract="AucklandRegionalPatientWCF.IPatientDemographicService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          
          <serviceMetadata httpGetEnabled="true"/>
          
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>

      <endpointBehaviors>
        <!-- use XML serialization -->
        <behavior name="xmlBehavior">
          <webHttp/>          
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
</configuration>

WCF Test Client

Upvotes: 0

Views: 1679

Answers (1)

Sujay Kulkarni
Sujay Kulkarni

Reputation: 88

Best way to get XML element from WCf as response use XML formatted string.. Best at performance as well as light weight..... Create response class and use XML serialization.... It will be helpful

Upvotes: 1

Related Questions