7

Pracuję nad usługą C#, która musi zapewniać uwierzytelnianie, a także zarządzanie rolami i profilami. Potrzebuję każdego profilu do posiadania właściwości typu List. Sekcja profilu w pliku web.config wygląda następująco:Korzystanie z właściwości profilu typu List w członkostwie .NET

<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> 

Jednak, kiedy rozpocząć usługa i próbują uzyskać dostęp do własności to zwraca następujący błąd:

System.Configuration.ConfigurationErrorsException: Próba załadowanie tego typu właściwości spowodowało następujący błąd: Nie można załadować typu "System.Collections.Generic.List <String>". (C: \ Projects \ MyProject \ web.config line 58) ---> System.Web.HttpException: Nie można załadować typu "System.Collections.Generic.List <String> '.

Czy istnieje sposób użycia ogólnej kolekcji do tego celu?

Odpowiedz

11

Po kolejnych poszukiwaniach w końcu udało mi się znaleźć odpowiedź. Rozwiązaniem jest użycie nazwy typu kwalifikowanej według jej przestrzeni nazw. Oznacza to, że dla mojego problemu użyłem:

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

Dowiedziałem się też, że jest to również możliwe określenie klasy zdefiniowane w innych zespołach. Aby użyć tych, potrzebujesz nazwy kwalifikowanej do montażu. Na przykład będzie to "System.Collections.Generic.HashSet`1 [[System.String, mscorlib, wersja = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089]], System.Core, wersja = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 "dla Hashset ciągów.

Powiązane problemy