C# 简易WCF程序,服务方法在客户端程序中不起作用
我刚开始编写WCF服务,遇到了一个奇怪的问题。我不知道为什么客户机中调用的服务中的方法不能正常工作,并且并没有创建新书。listBooks方法id ok,因为它返回图书列表,但方法addBook不会在booksList中创建新书。但这种情况仅在我从客户机使用此方法时出现,因为在服务构造函数中调用的方法创建了一本书 以下是客户端代码:C# 简易WCF程序,服务方法在客户端程序中不起作用,c#,wcf,C#,Wcf,我刚开始编写WCF服务,遇到了一个奇怪的问题。我不知道为什么客户机中调用的服务中的方法不能正常工作,并且并没有创建新书。listBooks方法id ok,因为它返回图书列表,但方法addBook不会在booksList中创建新书。但这种情况仅在我从客户机使用此方法时出现,因为在服务构造函数中调用的方法创建了一本书 以下是客户端代码: namespace LibraryClient { class Program { static ServiceReference.ServiceClien
namespace LibraryClient
{
class Program
{
static ServiceReference.ServiceClient client;
static void Main(string[] args)
{
client = new ServiceReference.ServiceClient();
client.addBook(2, "some book", "some author"); //this is not working
ServiceReference.Book[] books = client.listBooks();
foreach(var book in books)
{
Console.WriteLine("{0}", book.title);
}
Console.ReadLine();
}
}
}
和服务代码:
namespace LibraryService
{
public class Service : IService
{
private static List<Book> booksList;
private static List<User> usersList;
public Service()
{
booksList = new List<Book>();
usersList = new List<User>();
addBook(1, "ANOTHER BOOK", "ANOTHER AUTHOR"); //this is working
}
public List<Book> listBooks()
{
return booksList;
}
public List<User> listUsers() {
return usersList;
}
public void addBook(int id, string title, string author)
{
booksList.Add(new Book(id,title,author));
}
}
}
在服务器端,每次调用服务时,都会创建服务类的新实例。创建一个新实例意味着将调用这个类的构造函数 只要看看你在构造器中做了什么:
booksList = new List<Book>();
usersList = new List<User>();
在服务器端,每次调用服务时,都会创建服务类的新实例。创建一个新实例意味着将调用这个类的构造函数 只要看看你在构造器中做了什么:
booksList = new List<Book>();
usersList = new List<User>();
private static readonly object syncRoot = new object();
public void addBook(int id, string title, string author)
{
lock (syncRoot)
{
booksList.Add(new Book(id, title, author));
}
}