我是 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>
窗体应用程序
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>