7

Ich arbeite an einem C# -Webdienst, der Authentifizierung sowie Rollen- und Profilverwaltung bereitstellen muss. Ich brauche jedes Profil, um eine Eigenschaft vom Typ Liste zu haben. Der Profilabschnitt in der web.config sieht wie folgt aus:Verwenden einer Profileigenschaft des Typs List in .NET-Mitgliedschaft

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

Allerdings, wenn ich den Webservice beginnen und versuchen, diese Eigenschaft zuzugreifen es den folgenden Fehler zurückgibt:

System.Configuration.ConfigurationErrorsException: Der Versuch, Laden Sie den Typ dieser Eigenschaft führte zu dem folgenden Fehler: Konnte den Typ 'System.Collections.Generic.List <String>' nicht laden. (C: \ Projects \ MyProject \ web.config Zeile 58) ---> System.Web.HttpException: Konnte den Typ 'System.Collections.Generic.List <String>' nicht laden.

Gibt es eine Möglichkeit, eine generische Sammlung für diesen Zweck zu verwenden?

Antwort

11

Nach mehr Suche habe ich endlich die Antwort gefunden. Die Lösung besteht darin, den Typnamen zu verwenden, der durch seinen Namespace qualifiziert ist. Dies bedeutet, dass für meine Frage, die ich verwendet:

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

Ich fand heraus, dass es auch möglich ist, Klassen in anderen Baugruppen definiert angeben. Um diese zu verwenden, benötigen Sie den assembly-qualifizierten Namen. Zum Beispiel wäre das "System.Collections.Generic.HashSet`1 [[System.String, mscorlib, Version = 2.0.0.0, Kultur = neutral, PublicKeyToken = b77a5c561934e089]], System.Core, Version = 3.5.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 "für ein Hashset von Strings.