【发布时间】:2011-01-13 01:11:00
【问题描述】:
我的解决方案中有一个 Web 服务项目和一个 WPF 项目(用作客户端)。
表示 Web 服务的类非常简单,如下所示:
public class CardsGameService : System.Web.Services.WebService
{
private Card magicCard;
// Acts as a getter for magicCard field
[WebMethod]
public Card GetMagicCard()
{
return magicCard;
}
// Creates some random cards and sets the magicCard field
[WebMethod]
public Card[] GetNewCardSet()
{
Card[] cardSet = new Card[4];
for (int i = 0; i < 4; i++)
{
cardSet[i] = GetRandomCard();
}
Random random = new Random();
int index = random.Next(0, 3);
// This field does get its value and
// is not null when this method is executed
magicCard = cardSet[index];
return cardSet;
}
}
在我的客户端 WPF 代码隐藏类中,我正在实例化 CardsGameServiceSoapClient service 并调用返回一组卡片的 GetNewCardSet() Web 方法。
问题出在这里:
如果我想稍后调用 web 方法GetMagicCard(),它总是返回null。 为什么?我只实例化了一次CardsGameServiceSoapClient service,并且只要我运行我的客户端应用程序,这个对象就活着。
【问题讨论】:
-
更好的计划:不要在 Web 服务中使用状态。最佳计划:如果可以,升级到 WCF。