System.InvalidOperationException: операция недопустима из-за текущего состояния объекта.

Я занимаюсь разработкой приложения asp.net mvc для SharePoint Foundation 2010. Приложение asp.net размещается на одном компьютере, а SharePoint Foundation 2010 - на другом. Я развернул одну пользовательскую службу wcf в папке ISAPI среды SharePoint. Этот пользовательский сервис wcf создает базы данных контента программно. Приложение asp.net использует этот пользовательский сервис wcf. Я использую этот подход, потому что мой сценарий похож на ссылку - http://blog.sharedove.com/adisjugo/index.php/2012/07/31/creating-site-collections-in-specific-content-database/, При реализации вышеописанного сценария я получал ошибку - http://social.technet.microsoft.com/Forums/en-US/sharepointdevelopmentprevious/thread/f10d009b-13c4-4942-86b4-2ab8c4f5994d. Я решил эту ошибку с http://beyondweblogs.com/sharepoint-2010-sppersistedobject-access-denied/. Теперь я получаю сообщение об ошибке - System.InvalidOperationException: операция недопустима из-за текущего состояния объекта.

System.InvalidOperationException: Operation is not valid due to the current state of the object.
   at Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(HttpContext context)
   at Microsoft.SharePoint.Utilities.SPUtility.ValidateFormDigest()
   at Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate()
   at Microsoft.SharePoint.Administration.SPPersistedChildCollection`1.Add(T newObj, Boolean ensure)
   at Microsoft.SharePoint.Administration.SPPersistedChildCollection`1.Ensure(T newObj)
   at Microsoft.SharePoint.Administration.SPContentDatabaseCollection.Add(Guid newDatabaseId, String strDatabaseServer, String strDatabaseName, String strDatabaseUsername, String strDatabasePassword, Int32 warningSiteCount, Int32 maximumSiteCount, Int32 status, Boolean provision, Guid lockId, Int32 addFlags)
   at Microsoft.SharePoint.Administration.SPContentDatabaseCollection.Add(String strDatabaseServer, String strDatabaseName, String strDatabaseUsername, String strDatabasePassword, Int32 warningSiteCount, Int32 maximumSiteCount, Int32 status)
   at Niks.SP2010.SPHostedWCFService1.SPHostedWCFService.<createContentDb>b__7()
   at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
   at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
   at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
   at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
   at Niks.SP2010.SPHostedWCFService1.SPHostedWCFService.createContentDb()
   at Niks.SP2010.SPHostedWCFService1.SPHostedWCFService.<>c__DisplayClass3.<GetName>b__1()
   at Microsoft.SharePoint.SPSecurity.<>c__DisplayClass4.<RunWithElevatedPrivileges>b__2()
   at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
   at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
   at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
   at Niks.SP2010.SPHostedWCFService1.SPHostedWCFService.GetName()

Эта ошибка описана в приведенной выше ссылке bolg.sharedove.com. Я думаю, что мне нужно установить следующий код, как описано в bolg.sharedove.com

var storeContext = HttpContext.Current; 
HttpContext.Current = null; 
// do your code 
HttpContext.Current = storeContext;

Я не могу установить вышеуказанный код в сервисе wcf. Я пытался установить его в приложении asp.net, но произошла та же ошибка. Может ли кто-нибудь сказать, пожалуйста, где я должен установить этот код? Если у кого-то есть другое решение, пожалуйста, поделитесь.

1 ответ

Решение

Я просто добавил ссылку на System.Web.dll в сервисном приложении wcf. Теперь я могу использовать HttpContext в wcf. Я установил следующий код в wcf

var storeContext = HttpContext.Current; 
HttpContext.Current = null; 
// do your code 
HttpContext.Current = storeContext;

Теперь весь код в wcf работает нормально. Теперь я могу создавать базу данных контента и семейство сайтов программно.

Другие вопросы по тегам