Более конкретно - Как мне ссылаться на 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;