我创建了一个列表来存储一些令牌对象
public class PSService : IPSService
{
private List<Token> validTokens = new List<Token>();
然后我通过SoapUI调用方法以将令牌添加到该列表。
private bool RegisterToken(Token token)
{
validTokens.Add(token);
//this loop succesfully prints the list contents.
foreach (Token validToken in validTokens)
{
Console.WriteLine("registeredToken: " + validToken);
}
return true;
}
(为清楚起见,删除了不相关的代码)
然后,我还有另一种方法可以读取该列表的内容。但是当我通过SoapUI(在注册调用之后)调用它时,我没有得到预期的响应
public bool PostProduct(Token auth, Product item)
{
Console.WriteLine("input: " + auth);
//Console.WriteLine("validtoks: "+ validTokens.First());
foreach (Token tok in validTokens)
{
Console.WriteLine("Valid: " + tok);
Console.WriteLine("Deze zijn equal: " + tok.Equals(auth));
}
return false;
}
(再次删除不相关的代码)
(已注释的)validTokens.First()给出“列表不包含元素”错误。循环不执行(因为没有元素)
方法都在同一类中。
我认为我正在在RegisterToken上下文中创建有效令牌的副本,但是如何避免这种情况?
由于@Guru stron的评论,我调查了多个实例的可能性。
public class PSService : IPSService
{
private static List<Token> validTokens = new List<Token>();
将变量设为静态会在所有服务实例中将其持久化。现在它可以正常工作。