2017-12-06 4 views
1

POST, GET 및 DELETE 작업을 수락하기 위해 wcf Rest Service를 만들었습니다. 서버에 GET 요청을 보내면 JSON 데이터가 표시되지 않고 Google 크롬에 [] 기호가 표시됩니다.Wcf Rest Service GET 메서드

다음은 인터페이스입니다.

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

다음은 구현입니다.

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)); 
    } 
} 

여기에 .SVC 파일이 있습니다.

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

다음은 web.config 파일입니다.

<?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> 

다음은 스크린 샷입니다. click here to see the result

+0

요청을 실행하는 동안 데이터가 확인되었습니다. –

+0

예 데이터베이스에 레코드가 있습니다. – Mohammad

답변

1

이렇게하면됩니다. 또한이 부분에 대해 확신합니까 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 ""; 
} 

희망이 도움이됩니다.

+0

예. 레코드 목록을 반환하는 다른 방법도 있으며 완벽하게 작동합니다. – Mohammad