7

我正在开发一个需要提供身份验证以及角色和配置文件管理的 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> 

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

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

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

4

1 回答 1

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" 用于字符串哈希集。

于 2010-02-04T14:42:25.247 回答