我遇到了WCF服务的问题。我正在开发一个Excel插件,它将通过WCF服务与SQL Server数据库进行通信。
我的服务中有1个程序和1个功能。
过程正常,它可以在WCF测试客户端和Excel中显示ListBox中的结果(来自表中的行)。
问题在于功能。该函数在WCF测试客户端中工作,但在Excel解决方案中VS中的intellisense不会显示该函数的可能性。所以我不能称之为。
这是来自AdminService.svc
的代码(getPlan工作正常,getAutentication没有)
public class AdminService : IAdminService
{
string connection = ConfigurationManager.ConnectionStrings["PlanDatabase"].ToString();
public List<Plan> getPlan()
{
List<Plan> plans = new List<Plan>();
using (SqlConnection con = new SqlConnection(connection))
{
using (SqlCommand query = new SqlCommand("SELECT categoryid, categoryname FROM Production.Categories", con))
{
con.Open();
SqlDataReader reader = query.ExecuteReader();
while (reader.Read())
{
Plan plan = new Plan();
plan.id = int.Parse(reader[0].ToString());
plan.name = reader[1].ToString();
plans.Add(plan);
}
}
}
return plans.ToList();
}
public bool getAutentication(string login, string psw){
using (SqlConnection con = new SqlConnection(connection))
{
using (SqlCommand query = new SqlCommand("SELECT dbo.VerifyAccount('"+login+"','"+psw+"')", con))
{
con.Open();
SqlDataReader reader = query.ExecuteReader();
reader.Read();
if (int.Parse(reader[0].ToString()) == 1)
{
return true;
}
return false;
}
}
}
}
这是IAdminService.cs
:
[ServiceContract]
public interface IAdminService
{
[OperationContract]
bool getAutentication(string login, string psw);
[OperationContract]
List<Plan> getPlan();
}
这是我在Excel Addin中的表单的代码
AdminServiceClient connection = new AdminServiceClient();
public Form1()
{
InitializeComponent();
this.listBox1.DataSource = connection.getPlan().ToList();
this.listBox1.DisplayMember = "name";
}
private void button1_Click(object sender, EventArgs e)
{
bool pass = false;
this.Hide();
MessageBox.Show(pass.ToString());
}
Excel Addin中引用了服务。连接是正确的,因为getPlan正在显示并正常工作。但是,如果我想在Button1_click
中使用此命令:
pass = connection.getAutentication('login','password')
VS告诉我函数没有定义。
您在我的代码中看到了某种错误吗?我认为它应该正常工作,但我不知道为什么它不会。
非常感谢您的回答!