How to convert datatable to json string using json.net WCF Rest Service
- Create WCF Service Project using C# 4.0/4.5
- Add a WCF service name it as IRestWCF
using System.ServiceModel.Channels;
using System.ServiceModel.Web;
download Json.NET Add reference to Newtonsoft.JSon
[ServiceContract]
public interface IRestWCF
{
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.WrappedResponse, ResponseFormat = WebMessageFormat.Json)]
Message GetDataTableJson();
}
Message class is the base class for all types of operations in WCF.
public class RestWCF : IRestWCF
{
public Message GetDataTableJson()
{
DataTable dt =GetSalesData("json");
// Message message = WebOperationContext.Current.CreateJsonResponse<DataTable>(dt);
String strDatatable= Newtonsoft.Json.JsonConvert.SerializeObject(dt);
return WebOperationContext.Current.CreateTextResponse(strDatatable, "application/json;charset=utf-8", System.Text.Encoding.UTF8);// Message.CreateMessage(MessageVersion.Default, "json datatable", message);
}
private DataTable GetSalesData(String format)
{
DataTable salesdata = new DataTable("SalesPerson");
try
{
using (SqlConnection conn = new SqlConnection(@"server=(local)\sqlexpress2012;database=AdventureWorks2012;uid=sa;pwd=password&"))
{
using (SqlDataAdapter adapter = new SqlDataAdapter("select * from [AdventureWorks2012].[Sales].[SalesPerson]", conn))
{
adapter.Fill(salesdata);
salesdata.AcceptChanges();
conn.Close();
}
}
}
catch (SqlException ex)
{
throw ex;
}
if (format == "xml")
salesdata.RemotingFormat = SerializationFormat.Xml;
//else salesdata.RemotingFormat = SerializationFormat.Binary;
return salesdata;
}
}
- Web.Config
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="restbeh">
<serviceDebug httpHelpPageEnabled="True" includeExceptionDetailInFaults="true" />
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="restendbeh">
<!--<soapProcessing processMessages="True"/>-->
<webHttp helpEnabled="True" faultExceptionEnabled="True"
defaultBodyStyle="Bare"/>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<webHttpBinding>
<binding name="myrestbinding">
<security mode="None"></security>
<readerQuotas maxArrayLength="65536"/>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="WCFServicesREST.RestWCF" behaviorConfiguration="restbeh">
<endpoint contract="WCFServicesREST.IRestWCF" binding="webHttpBinding" bindingConfiguration="myrestbinding"
behaviorConfiguration="restendbeh"></endpoint>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="True"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" /> </system.webServer>
<system.web.extensions>
<scripting>
<scriptResourceHandler enableCaching="true" enableCompression="true" />
</scripting>
</system.web.extensions>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
Hai this is excellent article, can u send this code suhelsa@gmail.com
ReplyDelete