2013-11-25 5 views
1

Есть ли стандартный способ, в ASP.Net, обмениваться ресурсами между веб-запросами?Обмен ресурсами между веб-запросами?

Это моя проблема:

  • Существует веб-служба мне нужно запросить из кода за несколько страниц
  • Это веб-сервис позволяет только один вход в сессии в то время
  • Если вы дважды входите в систему, первая сессия недействительна.
  • Сессии хранятся в виде строк и истекают каждые 45 минут, после чего я должен повторно аутентифицироваться
  • Два запроса могут выполняться в одно и то же время поскольку они используют один и тот же сеанс

Как было сказано, что было бы лучшим способом одновременного доступа к этой сессии для нескольких страниц/запросов? И как я могу убедиться, что после истечения срока действия сеанса, после повторного входа в систему, новый сеанс будет общим?

Все это выполняется на одном сервере.

ответ

0

Я думаю, что вы ищете переменные «сеанс» для хранения ваших данных через сеанс.

http://msdn.microsoft.com/en-us/library/aa287606(v=vs.71).aspx

- редактировать --- Объект Применение .net является то, что вы ищете, это относится, так как 3,0: msdn.microsoft.com/en-us/library/ms178594(v = vs.85) .ASPX

С этим вы сохраните переменные состояния с вашим приложением, запущенным на сервере.

+1

Спасибо, но это для каждого пользователя, поэтому, если в User1 входит сеанс и сеанс веб-службы, то User2 регистрируется сразу после; Сессия User1 будет недействительной. –

+0

Возможно, вы хотите использовать файлы с отображением памяти, если вы используете DLL на C# или C++, вы можете создать именованное разделяемое место памяти, которое будет считаться dll и может использоваться любым процессом и страницами, которые вы хотите на сервере , http://msdn.microsoft.com/en-us/library/dd997372(v=vs.110).aspx –

+0

Я работаю на .Net 3.5, к сожалению. –

1

Я бы обернул весь веб-сервис в классе, подобном сервису, и использовал IoC как ninject для управления экземпляром этой службы. Затем вы должны придумать custom scope в ninject, чтобы аннулировать истекший сеанс.

Затем в вашем asp .net каждый запрос, который должен получить доступ к ресурсу веб-сервиса, должен попросить ninject вернуть экземпляр созданной службы. ninject затем сможет всегда возвращать один и тот же экземпляр до тех пор, пока сеанс будет действительным (учитывая, что у вас есть пользовательское право выбора).

0

Если ваш сайт работает на одном сервере, вы можете сохранить строку сеанса службы в Cache, которая имеет максимальный срок службы и видимость, которая соответствует серверному процессу, а не одной из сессий вашего клиента.

Это легко для любой части вашего кода, чтобы получить информацию о текущем сеансе и установить новый сеанс, если он еще не находится в кеше. Если вы настроите время жизни кеша немного короче, чем время жизни сеанса службы, то вы никогда не увидите, что сеанс отклонит вас, истек срок действия - ваша собственная кешированная копия всегда будет заканчиваться раньше.