私はwcfと残りの操作が初めてなので、どんな助けでもありがとう。
rdlc または datagridview に情報を表示するにはどうすればよいですか?
私のインターフェイスは、GetAllCustomer というメソッドを使用して操作コントラクトをセットアップします
namespace ConnectionToDatabase
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IGetCustomer" in both code and config file together.
[ServiceContract]
public interface IGetCustomer
{
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "xml/customers")]
List<Customer> GetAllCustomer();
}
}
インターフェイス クラスを実装し、SQL データベースに接続して顧客情報のリストを返す顧客クラス
public class GetCustomer : IGetCustomer
{
public List<Customer> GetAllCustomer()
{
List<Customer> mylist = new List<Customer>();
using (SqlConnection conn = new SqlConnection("Data Source=MATRIX\;Initial Catalog=******;Integrated Security=True"))
{
conn.Open();
string cmdStr = String.Format("select * from CInformation c inner join EmploymentInformation e on c.CID = e.CID");
SqlCommand cmd = new SqlCommand(cmdStr, conn);
SqlDataReader rd = cmd.ExecuteReader();
if (rd.HasRows)
{
while (rd.Read())
{
mylist.Add(new Customer(rd["LastName"].ToString(), rd["FirstName"].ToString(), rd["MiddleName"].ToString(), rd["EmailAddress"].ToString(), rd["PhoneNumber"]));
}
}
conn.Close();
}
return mylist;
}
}
[DataContract]
public class Customer
{
[DataMember]
public string lastname { get; set; }
[DataMember]
public string firstname { get; set; }
[DataMember]
public string middlename { get; set; }
[DataMember]
public string emailaddress { get; set; }
[DataMember]
public string phonenumber { get; set; }
public Customer(string last, string first, string middle, string email, string phone)
{
this.lastname = last;
this.firstname = first;
this.middlename = middle;
this.emailaddress = email;
this.phonenumber = phone;
}
}//end of class
ウェブ構成
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="ConnectionToDatabase.GetCustomer" behaviorConfiguration="EmpServiceBehaviour">
<endpoint address ="" binding="webHttpBinding" contract="ConnectionToDatabase.IGetCustomer" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="EmpServiceBehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
Windows フォーム アプリ
public Form1()
{
InitializeComponent();
}
private void btnGetAllCustomers_Click(object sender, EventArgs e)
{
WebRequest request = WebRequest.Create("http://localhost:52420/GetCustomer.svc/xml/customers");
WebResponse ws = request.GetResponse();
StreamReader responseStream = new StreamReader(ws.GetResponseStream());
string response = responseStream.ReadLine();
responseStream.Close();
textBox1.AppendText(response);
}
今はこんな感じ
テキストボックスで
<GetAllCustomerResponse xmlns="http://tempuri.org/"><GetAllCustomerResult xmlns:a="http://schemas.datacontract.org/2004/07/ConnectionToDatabase" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:Customer><a:firstname>Dog</a:firstname><a:lastname>Cat</a:lastname><a:middlename>up</a:middlename></a:Customer></GetAllCustomerResult></GetAllCustomerResponse>