C # Как инициализировать WebService - PullRequest
9 голосов
/ 25 августа 2009

Есть ли возможность инициализировать WebService.

Я ищу метод, который запускается только во время первого вызова WebService. Есть ли что-то подобное в .Net?

Ответы [ 5 ]

18 голосов
/ 25 августа 2009

Если вам требуется «инициализация» при первом подключении данного клиента к веб-службе :

Имейте метод Initialise, который возвращает токен, такой как GUID, который затем требуется при каждом обращении к фактическому методу "делает работу" вашего веб-сервиса. Затем вы можете убедиться, что для этого клиента служба всегда инициализируется.

Если вам это требуется при первом вызове веб-службы :

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

Если это требуется при первом вызове с момента последней перезапуска / запуска IIS, пул приложений :

Иметь статический конструктор для класса, чтобы при первом его создании статический конструктор запускался и выполнял инициализацию.

5 голосов
/ 25 августа 2009

Если вы пытаетесь инициализировать ресурс, который используется веб-службой, и вы хотите инициализировать его только один раз для каждого приложения, вы можете использовать событие Application_Start в Global.asax. Помните, что IIS будет перезапускать пул приложений всякий раз, когда пул приложений потребляет слишком много ресурсов.

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

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

4 голосов
/ 25 августа 2009

Когда вы создаете приложение WebService в Visual Studio, по умолчанию будет добавлен класс с именем «Сервис». Когда вы посмотрите на код для этого класса (Service.cs), вы увидите конструктор ("public Service ()") с двумя закомментированными строками. Вы можете поместить здесь свой код инициализации или вызвать закрытый метод, который вы определили внутри класса Service. Этот конструктор будет вызываться только тогда, когда ваш клиент впервые вызовет любой WebMethod в классе Service.

0 голосов
/ 25 апреля 2013

Вы можете использовать Application_Start в global.asax, он будет запущен один раз, если какой-либо веб-сервис внутри вашего проекта называется

0 голосов
/ 25 августа 2009

Ну, нет эквивалента инициализации J2EE, если это то, что вам нужно ... Однако каждое веб-приложение размещается в домене приложения. Время от времени приложение может быть переработано, и может быть создан новый домен приложения ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...