7 Stimmen

Verwendung einer Profileigenschaft vom Typ Liste in .NET Membership

Ich arbeite an einem C#-Webservice, der sowohl Authentifizierung als auch Rollen- und Profilverwaltung bereitstellen muss. Ich brauche für jedes Profil eine Eigenschaft vom Typ List. Der Profilabschnitt in der web.config sieht wie folgt aus:

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

Wenn ich jedoch den Webservice starte und versuche, auf diese Eigenschaft zuzugreifen, wird die folgende Fehlermeldung angezeigt:

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

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

11voto

hancock Punkte 183

Nach längerem Suchen habe ich endlich die Antwort gefunden. Die Lösung ist die Verwendung des Typnamens, der durch seinen Namespace qualifiziert ist. Dies bedeutet, dass ich für mein Problem verwendet:

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

Ich habe außerdem herausgefunden, dass es auch möglich ist, Klassen anzugeben, die in anderen Baugruppen definiert sind. Um diese zu verwenden, benötigen Sie den assembly-qualifizierten Namen. Das wäre zum Beispiel "System.Collections.Generic.HashSet`1[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" für ein Hashset von Strings.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X