Я недавно преобразовал свой сервис ASMX в WCF, чтобы использовать преимущества сеансов.
Я просмотрел некоторые учебные пособия по сеансам в MSDN, но все еще не уверен, что в моем коде есть хорошие настройки. на данный момент это работает, но я не совсем уверен, почему.
Я получил
[ServiceContract
(SessionMode = SessionMode.Required,
Namespace = "http://smartshopservice.org")]
Тогда у меня есть
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class SmartShopService : SmartShopInterface
{
private static Shopper sh = new Shopper();
private List<aaa> data = new List<aaa>();
Первая часть моего вопроса состоит в том, является ли Shopper моей "глобальной" переменной. Я хочу, чтобы он всегда был там, в то время как все остальное, такое как «данные», создается для каждой сессии. Я также настроил WebConfig соответственно. Есть ли что-нибудь еще, что мне нужно сделать?
Мой второй вопрос: как закрыть сеанс, а затем сбросить все эти переменные? Мой Клиент сейчас - это WebClient, он общается так:
static GarfieldService.SmartShopInterfaceClient service
= new GarfieldService.SmartShopInterfaceClient();
Кажется, это работает, и у меня есть onbody = "" страницы ASP.NET для вызова функции, которая выглядит следующим образом:
[WebMethod]
public static bool Connect() {
try {
if (service.State
== System.ServiceModel.CommunicationState.Closed) {
service.Open();
return true;
}
else if (service.State
== System.ServiceModel.CommunicationState.Created) {
service.Open();
return true;
}
}
catch {}
return false;
}
Так что я могу подключиться, но как мне отключить или закрыть сеанс?