Почему мой конструктор WebService вызывается каждый раз, когда я вызываю веб-метод? - PullRequest
4 голосов
/ 06 мая 2009

Мой конструктор веб-сервисов вызывается каждый раз, когда я вызываю веб-метод. Это вызывает некоторые проблемы с некоторыми новыми функциями, которые я добавляю, и я не могу понять, что я делаю неправильно, чтобы вызвать это. Единственное место, где я обновляю веб-сервис, находится в application_Start global.asax.cs, но если я удаляю код для new веб-сервиса, он все равно вызывает конструктор каждый раз, когда я вызываю веб-метод.

Я проверил это, перейдя к файлу .asmx и вызвав таким образом webmethod, и я также создал тестовое консольное приложение, которое имеет ссылку на веб-сервис и будет вызывать методы таким образом. Оба они дают одинаковые результаты.

Я использую c # в ASP.NET 1.1. Есть идеи?

Edit:
Я пытаюсь создать поток пульса, который опрашивает службу Windows. Я пытаюсь сохранить результат в хэш-таблице (несколько потоков опрашивают несколько служб). Я изменил webmethod (как он использовал для опроса службы Windows), чтобы получить результаты из хеш-таблицы. Мы пытаемся увеличить скорость звонка через веб-метод.

Ответы [ 3 ]

18 голосов
/ 06 мая 2009

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

Если вы хотите сохранить некоторые значения / состояние между вызовами веб-методов, вы должны использовать для этой цели сеанс ASP.NET или базу данных.

См. Этот вопрос для деталей: Это должно работать таким образом?

0 голосов
/ 06 мая 2009

Вы также можете переключиться на WCF, который поддерживает сервисы с отслеживанием состояния

0 голосов
/ 06 мая 2009

Э-э-э ... это своего рода замысел, я боюсь. Можете ли вы описать проблемы, с которыми вы сталкиваетесь, и то, что вы пытаетесь достичь, я думаю, вам нужно немного изменить свой дизайн здесь.

...