Использование свойства профиля типа List в .NET Membership - PullRequest
7 голосов
/ 04 февраля 2010

Я работаю над веб-сервисом C #, который должен обеспечивать аутентификацию, а также управление ролями и профилями. Мне нужно, чтобы каждый профиль имел свойство типа List. Раздел профиля в web.config выглядит следующим образом:

<profile defaultProvider="MyProfileProvider" enabled="true">
  <providers>
    <remove name="MyProfileProvider"/>
    <add connectionStringName="MySqlServer"
      applicationName="MyApp"
      name="MyProfileProvider"
      type="System.Web.Profile.SqlProfileProvider" />
  </providers>
  <properties>
    <add name="Websites" type="System.Collections.Generic.List&lt;String&gt;" serializeAs="Binary"/>
  </properties>
</profile> 

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

System.Configuration.ConfigurationErrorsException: попытка загрузить тип этого свойства привела к следующей ошибке: Не удалось загрузить тип 'System.Collections.Generic.List '. (C: \ Projects \ MyProject \ web.config строка 58) ---> System.Web.HttpException: не удалось загрузить тип 'System.Collections.Generic.List '.

Есть ли способ использовать универсальную коллекцию для этой цели?

1 Ответ

11 голосов
/ 04 февраля 2010

После дополнительных поисков мне наконец-то удалось найти ответ.Решение состоит в том, чтобы использовать имя типа, соответствующее его пространству имен.Это означает, что для моей проблемы я использовал:

<add name="Websites" type="System.Collections.Generic.List`1[System.String]" serializeAs="Binary"/>

Я также обнаружил, что также можно указывать классы, определенные в других сборках.Чтобы использовать их, вам нужно имя с указанием сборки.Например, это будет "System.Collections.Generic.HashSet`1 [[System.String, mscorlib, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089]], System.Core, версия = 3.5.0.0Культура = нейтральная, PublicKeyToken = b77a5c561934e089 "для Hashset of Strings.

...