我正在开发一个需要提供身份验证以及角色和配置文件管理的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<String>" 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;'。
有没有办法为此目的使用通用集合?
答案 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。