Я работаю над Веб-сервисом C#, который должен обеспечить аутентификацию, а также управление профилем и роли. Мне нужен каждый профиль, чтобы иметь свойство списка типов. Раздел профиля в 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<String>" serializeAs="Binary"/>
</properties>
</profile>
Однако, когда я запускаю веб-сервис и попытку получить доступ к тому свойству, это возвращает следующую ошибку:
Система. Конфигурация. ConfigurationErrorsException: Попытка загрузить тип этого свойства привела к следующей ошибке: не Мог загрузить тип 'Система. Наборы. Универсальный. Список <Строка>'. (C:\Projects\MyProject\web.config строка 58)---> Система. Сеть. HttpException: не Мог загрузить тип 'Система. Наборы. Универсальный. Список <Строка>'.
Существует ли способ использовать универсальный набор с этой целью?
После дополнительных поисков мне наконец удалось найти ответ. Решение состоит в том, чтобы использовать имя типа, уточненное его пространством имен. Это означает, что для своей проблемы я использовал:
<add name="Websites" type="System.Collections.Generic.List`1[System.String]" serializeAs="Binary"/>
Я также обнаружил, что также можно указать классы, определенные в других сборках. Чтобы использовать их, вам нужно имя, указанное в сборке. Например, это будет «System.Collections.Generic.HashSet`1 [[System.String, mscorlib, Version = 2.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089]], System.Core, Version = 3.5.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089 "для хеш-набора строк.