Есть ли у веб-службы asp.net что-то вроде запуска приложения и переменных приложения? - PullRequest
1 голос
/ 29 января 2012

Я разрабатываю веб-сервис, который при вызове уведомляет другую программу через соединение tcp.Моя проблема заключается в том, где хранить открытое соединение TCP.Насколько я понимаю, веб-сервисы начинаются и заканчиваются каждым HTTP-запросом, и в нем нет места для переменных приложения, таких как соединение open tcp.

Пожалуйста, исправьте меня, если я ошибаюсь.

В частности, в какой части файла asmx или за его пределами я должен поместить код для прослушивания входящего трафика TCP?*

Ответы [ 3 ]

2 голосов
/ 29 января 2012

События приложения в Global.asax должны запускаться для веб-службы, размещенной как приложение в IIS. Вы можете использовать это. Имейте в виду, что они будут срабатывать, даже если веб-страница, а не веб-служба доступны в одном приложении.

1 голос
/ 29 января 2012

К счастью для вас, вы не правы.

События всего приложения срабатывают, плюс у вас есть доступ ко всем контейнерам asp.net, контейнер Application для переменных уровня приложения, контейнер Session для переменных уровня сеанса (если сторона клиентаподдерживает файлы cookie, идентификатор сеанса может даже передаваться в файле cookie) и контейнер Items для переменных уровня запроса.

Однако помогает ли это сохранить дополнительный прослушиватель TCP (если я понимаю,правильно) это другая история, не очевидная.

1 голос
/ 29 января 2012

Вы можете разместить соединение tcp как статический член класса обслуживания и создать статический конструктор, который обрабатывает создание экземпляров.

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

...