Вызов длительной операции в функции WSS Событие OnActivation - PullRequest
0 голосов
/ 23 апреля 2009

Более конкретно - Как мне ссылаться на SPContext в веб-сервисе с помощью [SoapDocumentMethod (OneWay = true)] ?

Мы создаем функцию, которая должна запускать задание при создании сайта. Работа занимает около 4 минут. Итак, мы создали веб-сервис, который мы можем вызывать при активации этой функции. Это работает, но мы хотим, чтобы он теперь работал асинхронно. Мы нашли свойство OneWay объекта SoapDocumentMethod, и оно работало бы замечательно, но теперь SPContext имеет значение NULL.

У нас есть веб-службы в виртуальном каталоге _vti_bin, поэтому они доступны на каждом сайте Windows Sharepoint Services. Я использовал SPContext.Current.Web, чтобы получить сайт и выполнить длительную операцию. Я хотел просто выстрелить и забыть об этом, сразу же возвращая мыльный ответ и позволяя процессу запускаться.

Как я могу получить текущий SPContext? Я имел обыкновение делать это в моем веб-сервисе:

SPWeb mySite = SPContext.Current.Web;

Могу ли я получить тот же контекст, когда у меня есть атрибут [SoapDocumentMethod (OneWay = true)] , примененный к моему веб-сервису?

Или я должен заново создать SPWeb с URL-адреса?

Это похоже на эту тему: односторонний доступ к веб-сервису и новый SPSite (myUrl)


Обновление: я пробовал эти два способа, но они не работали:

SPWeb targetSite = SPControl.GetContextWeb(this.Context);

SPWeb targetSite2 = SPContext.GetContext(this.Context).Web;

1 Ответ

0 голосов
/ 11 июня 2009

Односторонние методы не могут иметь возвращаемого значения или каких-либо выходных параметров

Но у них есть параметры, не так ли?

Когда вы обращаетесь к методу веб-сервиса, вы не можете передать URL текущего сайта из Featurereceiver, а затем сделать использование (сайт SPSite = новый SPSite (urlPassedAsParameter)) в методе веб-сервиса?

SPFeatureReceiverProperties в переопределении FeatureActivation имеет текущий SPWeb или SPSite как SPFeatureReceiverProperties.Parent.

...