SharePoint 2007: использовать SqlProfileProvider со встроенной проверкой подлинности Windows?

Я пытаюсь выяснить, можно ли использовать SqlProfileProvider (aspnetdb) для хранения определенной информации профиля для пользователей, прошедших проверку подлинности на сайте SharePoint 2007 с помощью встроенной проверки подлинности Windows. Цель состоит в том, чтобы разработать код ASP.NET, который хранит несколько строк персонализации для каждого пользователя и будет работать на сайте ASP.NET или SharePoint. Я надеялся, что смогу использовать SqlProfileProvider, и тогда он будет доступен в ASP.NET или SharePoint при условии, что я добавлю правильный поставщик в web.config.

Вот что у меня есть в web.config в веб-приложении SharePoint, однако внутри моего кода программной части ASPX Context.Profile всегда имеет значение null:

<profile automaticSaveEnabled="true" defaultProvider="AspNetSqlProfileProvider">
<providers>
    <clear/>
    <add name="AspNetSqlProfileProvider" 
         connectionStringName="aspnetdb" 
         applicationName="simple_test" 
         type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
<properties>
    <add name="TestName" type="System.String" allowAnonymous="false"/>
</properties>

(Note that aspnetdb is a valid connection string elsewhere in the web.config).

У кого-нибудь есть опыт подключения поставщика профиля aspnetdb в сочетании с проверкой подлинности Windows, или это работает только в том случае, если действует проверка подлинности с помощью форм / членства? Есть ли другие предложения о том, как пользовательские настройки могут быть сохранены в ASP.NET/SharePoint без использования файлов cookie или написания модели данных и доступа к слою с нуля?


person Mike    schedule 12.08.2009    source источник
comment
Вы просто хотите сохранить персонализированные настройки для веб-части или хотите сохранить их для всего сайта / сети?   -  person AdamBT    schedule 13.08.2009
comment
Интересно, работает ли это. Мне кажется, что это может испортить некоторую часть SharePoint, но попробовать стоит.   -  person Alex Angas    schedule 13.08.2009
comment
@AdamBT - я хотел бы хранить значения профиля для каждого пользователя в пределах всего веб-сайта или, как SharePoint любит называть это SiteCollection.   -  person Mike    schedule 13.08.2009


Ответы (2)


Что ж, это должно быть возможно, согласно этой статье:

Поскольку профили хранятся в пользовательской записи, вам необходимо аутентифицировать текущего пользователя, прежде чем вы сможете читать или записывать информацию профиля. Вы можете использовать любой тип системы аутентификации, включая аутентификацию на основе Windows и аутентификацию на основе форм. Системе профилей все равно - она ​​просто хранит информацию о пользователе в записи, которая определяется на основе идентификатора пользователя. Поскольку каждая система аутентификации однозначно идентифицирует пользователей по идентификатору пользователя, любая система аутентификации будет работать.

Но никогда раньше не пробовал.

Кроме того, я нашел этот пост здесь, на SO, который более подробно описывает:

Сообщение SO

person Colin    schedule 13.08.2009
comment
Спасибо, я тоже думаю, что это должно сработать. Я ссылался на SO Post при настройке своего Web.config, но SharePoint, похоже, полностью игнорирует его даже после пары iisreset. - person Mike; 13.08.2009

После долгих поисков и создания прототипов мне удалось наткнуться на решение этой проблемы благодаря это сообщение форума MSDN. SharePoint удаляет модуль профиля ASP.NET, поэтому вам нужно снова добавить его в раздел httpModules Web.config:

<add name="Profile" type="System.Web.Profile.ProfileModule" />  

Есть также некоторые обходные пути, необходимые для доступа к атрибутам профиля, определенным в web.config, чтобы вы не получали ошибок времени компиляции. Вы можете разработать собственный поставщик как , описанный в сообщении Бекки для основанных на формах аутентификация или вызовы Profile .GetPropertyValue и Profile.SetPropertyValue, чтобы получить и установить значения профиля для текущего пользователя.

person Mike    schedule 16.08.2009