Използване на Smart част за сайт на FBA

Имам контрол за използване, който съдържа някои функции на ajax. Направих всички необходими промени, за да направя сайта си съвместим с ajax (т.е. добавих съответните тагове в web.config), което работи добре. Използвам интелигентна част, за да заредя тази потребителска контрола. Но когато щракна върху отваряне на панела с инструменти за интелигентната част, това ми дава следното.

Неуспешно отваряне на контролния път на потребителя: System.UnauthorizedAccessException: Достъпът до пътя „C:\Inetpub\wwwroot\wss\VirtualDirectories\5252\UserControls“ е отказан. в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) в System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) в System.IO.Directory.GetFiles (Път на низ, String searchPattern, SearchOption searchOption) в System.IO.Directory.GetFiles(Път на низ) в SmartPart.UserControlToolpart.RenderToolPart(HtmlTextWriter изход)

Моля, помогнете ми да разреша тази грешка..


person Sachin    schedule 23.07.2009    source източник


Отговори (2)


Някога назад имах същия проблем. По-скоро проблемът е в това как работи SmartPart. Той има UserControlPath, който винаги сочи към пътя на потребителския контрол.

Според Ян (създател на SmartPart) коментар можете да промените това в DWP файла. Това, което можете да направите, е да разположите weppart и да експортирате WebPart, да отворите файла dwp/webpart в Notepad, да потърсите текста UserControlPath, заменете с вашия път. Качете уебчастта обратно в sharepoint с друго име и използвайте новата уебчаст

Един проблем е, че работи за първи път и отново, когато се опитам да редактирам или променя потребителския контрол, той се променя обратно на /UserControl.

Това, което направих, за да разреша, е, че взех копието на кода от Codeplex и направих свойството UserControlPath browsable true така че пътят да бъде видим в частта с инструменти на уеб частта. Кодовият фрагмент по-долу присъства в SmartPart.cs

    [Browsable(true),

    WebPartStorage(Storage.Personal)]
    public string UserControlPath {....}
person Kusek    schedule 29.07.2009

Това се случва, защото сте поставили потребителския контрол в папка в основата на сайта, до която SharePoint няма да има достъп.

Обикновено, когато внедрите потребителска контрола в SharePoint, вие поставяте контролата си в папката CONTROLTEMPLATES, която е нанесена към виртуалната директория ~/_controltemplates в IIS, по подразбиране SP има достъп до тази папка.

След това можете да поставите запис SafeControl във вашия web.config за тази папка

  <SafeControl Src="~/_controltemplates/*" IncludeSubFolders="True" Safe="True"    AllowRemoteDesigner="True" />

Папката се намира в ‹12HIVE>/TEMPLATE/CONTROLTEMPLATES във файловата система.

person Lee Dale    schedule 23.07.2009
comment
Здравей, Лий Дейл, благодаря за отговора ти.. но сайтът ми използва удостоверяване, базирано на формуляр. можете ли да ми обясните как да използвам потребителски контрол, базиран на ajax, с помощта на интелигентна част в сайт за удостоверяване, базиран на формуляр. Или как потребителят на FBA може да получи достъп за четене и запис до папката userControls...? - person Sachin; 24.07.2009
comment
Не съм сигурен точно какъв е проблемът, тъй като AJAX няма нищо общо с FBA или NTLM удостоверяване. За да активирате AJAX да работи, ще ви трябват необходимите модификации на web.config, след което трябва да добавите маркер ‹ScriptManager /› или към оформлението на страницата, или към основната страница, след което да обградите контролата в панел за актуализиране. FBA не трябва да влияе на това, тъй като потребителят на FBA ще бъде член на сайта и следователно ще може да работи в контекста на SP. - person Lee Dale; 27.07.2009
comment
Хей, Лий, благодаря, че ми помогна, но настройката трябва да се направи, за да работи ajax добре, беше направено успешно. Това, което искам, е как да използвам интелигентната част в сайта за удостоверяване на базата на формуляри. Тъй като интелигентната част ми дава грешка за достъп до пътя „C:\Inetpub\wwwroot\wss\VirtualDirectories\5252\UserControls“, където се намира потребителската контрола. Опитах се да поставя потребителския контрол в папката controltrmplate, но по-късно открих, че интелигентната част препраща към пътя „C:\Inetpub\wwwroot\wss\VirtualDirectories\5252\UserControls' за зареждане на потребителските контроли. Това работи добре в сайта за удостоверяване на NTLM. - person Sachin; 29.07.2009