2017-12-06 25 views
1

POST、GET、DELETE操作を受け入れるためにwcf Rest Serviceを作成しました。サーバーにGETリクエストを発行すると、JSONデータは表示されず、[]マークがGoogle Chromeに表示されます。Wcf Restサービス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

関連する問題