gpt4 book ai didi

c# - 如何向 WCF session 添加值并在客户端 (WinForm) 和 WCF 上下文中使用它?

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:38 25 4
gpt4 key购买 nike

我有一个带有连接到 WCF 的 WinForm 客户端的应用程序。我使用 session ,在登录时启动 session ,在注销时终止 session 。

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IOperazioniUtente
{
[OperationContract(IsInitiating = true, IsOneWay = false)]
Utente login(Utente utenteInConnessione);

...........
...........

[OperationContract(IsInitiating = false, IsTerminating = true, IsOneWay = true)]
void logout(Utente ute);


}

我想像在 ASP.NET 上一样向 session 添加值,这可能吗?

最佳答案

当有一个 PerSession 实例时,每个客户端代理都有一个服务器实例。

因此,要将对象添加到 session 中,只需将对象添加到服务器实例、集合或最适合您管理的任何类型的字段或属性中。

例如:

<强>1。服务接口(interface)

和题中的一样

[ServiceContract(SessionMode=SessionMode.Required)]
public interface IMessageService
{
[OperationContract(IsOneWay = true)]
void AddMessageToSession(String msg);

[OperationContract]
List<String> ListSessionMessages();

}

<强>2。服务实现

public class MessageService : IMessageService
{
private List<String> messages = new List<String> ();

public void AddMessageToSession(string msg)
{
messages.Add(msg);
}
public List<string> ListSessionMessages()
{
return messages;
}
}

<强>3。客户来电

每个客户端一个 session == 每个调用者 1 个服务实例

MessageServiceClient client1 = new MessageServiceClient();
MessageServiceClient client2 = new MessageServiceClient();
// ...
for (int i = 0; i < 5; i++)
client1.AddMessageToSession("msg" + i);
client2.AddMessageToSession("msg" );
int nbMessages1 = client1.ListSessionMessages().Count();
int nbMessages2 = client2.ListSessionMessages().Count();
// outputs 5 :
Console.WriteLine("Number of messages in Session 1 : " + nbMessages1);
// outputs 1 :
Console.WriteLine("Number of messages in Session 2 : " + nbMessages2);

问候

关于c# - 如何向 WCF session 添加值并在客户端 (WinForm) 和 WCF 上下文中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com