Использование смарт-части для сайта FBA

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

Не удалось открыть путь управления пользователем: System.UnauthorizedAccessException: доступ к пути C: \ Inetpub \ wwwroot \ wss \ VirtualDirectories \ 5252 \ UserControls запрещен. в System.IO .__ Error.WinIOError (Int32 errorCode, String mightFullPath) в System.IO.Directory.InternalGetFileDirectoryNames (String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) в System.IO.Directory.Get (Строковый путь, String searchPattern, SearchOption searchOption) в System.IO.Directory.GetFiles (String path) в SmartPart.UserControlToolpart.RenderToolPart (вывод HtmlTextWriter)

Пожалуйста, помогите мне решить эту ошибку ..


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


Ответы (2)


Когда-то у меня была такая же проблема. Проблема в том, как работает SmartPart. Он имеет UserControlPath, всегда указывающий на путь управления пользователем.

Согласно Яну (создателю SmartPart) comment, вы можете изменить это в файле DWP. Что вы можете сделать, так это развернуть weppart и экспортировать веб-часть, открыть файл dwp / webpart в блокноте, найти текст UserControlPath заменить на свой путь. Загрузите веб-часть обратно в sharepoint с другим именем и используйте новую веб-часть

Одна из проблем заключается в том, что он работает впервые и снова, когда я пытаюсь изменить или изменить пользовательский элемент управления, он возвращается к / UserControl.

Чтобы решить эту проблему, я взял копию кода из Codeplex и сделал свойство UserControlPath доступным для просмотра. чтобы путь был виден в инструментальной части веб-части. Нижеприведенный фрагмент кода присутствует в 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