user8705895
user8705895

Reputation:

Wcf Rest Service GET Method Unable to display JSON data

I created wcf Rest Service to accept the POST , GET and DELETE Operation. When issue a GET request to the server ,its does not display the JSON data and displaying [] sign in Google chrome .

Here is the interface.

[OperationContract]
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/GetCustomers/{prefix}")]
string GetCustomers(string prefix);

Here is the Implementation .

public string GetCustomers(string prefix)
{

    List<object> customers = new List<object>();
    string sql = "SELECT * FROM Current_Account_Holder_Details WHERE Account_Holder_Last_Name LIKE @prefix + '%'";
    using (SqlConnection conn = new SqlConnection())
    {
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
        using (SqlCommand cmd = new SqlCommand(sql))
        {
            cmd.Parameters.AddWithValue("@prefix", prefix);
            cmd.Connection = conn;
            conn.Open();
            using (SqlDataReader sdr = cmd.ExecuteReader())
            {
                while (sdr.Read())
                {
                    customers.Add(new
                    {
                        Tittle = sdr["Tittle"],
                        Account_Holder_First_Name = sdr["Account_Holder_First_Name"],
                        Account_Holder_Last_Name = sdr["Account_Holder_Last_Name"],
                        Account_Holder_DOB = sdr["Account_Holder_DOB"],
                        Account_Holder_House_No = sdr["Account_Holder_House_No"],
                        Account_Holder_Street_Name = sdr["Account_Holder_Street_Name"],
                        Account_Holder_Post_Code = sdr["Account_Holder_Post_Code"],    
                        Account_Holder_Occupation = sdr["Account_Holder_Occupation"],
                        Account_Number = sdr["Account_Number"] 
                     });
                 }
             }
             conn.Close();
         }    
         return (new JavaScriptSerializer().Serialize(customers));
     }
}

Here is the .SVC file.

<%@ ServiceHost Language="C#" Debug="true" Service="HalifaxWCFProject.HalifaxService"%>

Here is the web.config file.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DBCS" connectionString="Data Source=;Initial Catalog=HalifaxDatabase;Integrated Security=True" providerName="System.Data.SqlClient" />
    <add name="HalifaxDatabaseEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=;initial catalog=HalifaxDatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <system.serviceModel>
    <services>
      <service name="HalifaxWCFProject.HalifaxService" behaviorConfiguration="mexBehaviour">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="" behaviorConfiguration="REST" contract="HalifaxWCFProject.IHalifaxService" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8080/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexBehaviour">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="REST">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Here is the screen shot. click here to see the result

Upvotes: 1

Views: 378

Answers (1)

Zwei James
Zwei James

Reputation: 73

I do it this way. Also are you sure about this part RequestFormat = WebMessageFormat.Json ?

[OperationContract]
[WebInvoke(Method = "GET", 
           ResponseFormat = WebMessageFormat.Json, 
           BodyStyle = WebMessageBodyStyle.Wrapped, 
           UriTemplate = "register?serverCode={serverCode}")]
string Registration(string strVal);
public string Registration(string strVal)
{
    return "";
}

Hope this helps.

Upvotes: 0

Related Questions