asp.net 2.0 Profile 的一些注意事项(序列化)

本文介绍了解决ASP.NET 2.0 Profile特性中自定义类序列化失败的问题。通过调整Web.Config文件中的配置项,将序列化方式从默认的SOAP改为Binary,成功解决了错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日开发培训系统时,大量地使用到了 asp.net 2.0  的 profile 这个好用东西
配置文件是这样写
        <profile defaultProvider="MyProfileProvider" automaticSaveEnabled="false">
            
<!--定义配置(profile)-->
            
<providers>
                
<add name="MyProfileProvider" type="System.Web.Profile.SqlProfileProvider" applicationName="CX" connectionStringName="CX.Services.CnString"/>
            
</providers>
            
<properties>
                
<add name="UserSelectorGlobalVar" type="Profiles.UserSelectorGlobalVar"  allowAnonymous="false"></add>
                
<add name="UserExamDataSource" type="Profiles.UserExamDataSource" allowAnonymous="false"></add>
                
<add name="ExamSelectedTimu" type="Profiles.ExamSelectedTimu" allowAnonymous="false"></add>
            
</properties>
        
</profile>

其中有一个类的代码如下:

using System;
using System.Collections.Generic;
using System.Text;

namespace Profiles
{
   
    
public class UserSelectorGlobalVar
    
{
        
public UserSelectorGlobalVar()
        
{
        }

        
private static System.Collections.Generic.Dictionary<Guid, Models.UserInfo> _SelectedUsers 
            
= new System.Collections.Generic.Dictionary<Guid, Models.UserInfo>();

        
public Dictionary<Guid, Models.UserInfo> SelectedUsers
        
{
            
get return _SelectedUsers; }
            
set { _SelectedUsers = value; }
        }

    }

}


呵呵,但是当调用this.profile.Save () 的时候说这个类出错,我想是没有将这个类标志为可以序列化的,于是加上属性
[Serializable]
但是问题依旧.
后来想起以前做的一个实验中将一个IList<XXX> 序列化后存入一个文件,选用SOAP那种方式就出错,好像是不支持吧,改用Binary 那种方式就好了. 但是profile 的序列化方式在哪里设定呢

后来想一下因该是在Web.Config 里面改的,借助VS2005 的代码提示功能发现

 <add name="ExamSelectedTimu" type="Profiles.ExamSelectedTimu" allowAnonymous="false"></add>

这一句有一个属性:serializeAs 字面意思就能猜到啦,于是改为这样:

<add name="ExamSelectedTimu" type="Profiles.ExamSelectedTimu" serializeAs="Binary" allowAnonymous="false"></add>

Debug.... OK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值