在.NET成员资格中使用List类型的配置文件属性

时间:2010-02-04 11:56:25

标签: c# web-services asp.net-membership membership asp.net-profiles

我正在开发一个需要提供身份验证以及角色和配置文件管理的C#Web服务。我需要每个配置文件都有一个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> 

但是,当我启动webservice并尝试访问该属性时,它会返回以下错误:

System.Configuration.ConfigurationErrorsException:尝试加载此属性的类型会导致以下错误:无法加载类型'System.Collections.Generic.List&lt; String&gt;'。 (C:\ Projects \ MyProject \ web.config第58行)---&gt; System.Web.HttpException:无法加载类型'System.Collections.Generic.List&lt; String&gt;'。

有没有办法为此目的使用通用集合?

1 个答案:

答案 0 :(得分:11)

经过多次搜索,我终于找到了答案。解决方案是使用由其命名空间限定的类型名称。这意味着对于我使用的问题:

<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 = neutral,PublicKeyToken = b77a5c561934e089]],System.Core,Version = 3.5.0.0, Culture = neutral,PublicKeyToken = b77a5c561934e089“for a Hashset of Strings。