在web.config中配置profile如下:
<profile>
    <properties>
        <add name="Photo" type="System.Drawing.Image" serializeAs="Binary"/>
        ……
    </Properties>
    ……
</profile>在IHttpHandler中可以通过context.Profile["Photo"]获得当前用户的Photo现在想在网页上显示所有用户的照片,请问如何在IHttpHandler中无法获得所有用户Profile中的Photo值?

解决方案 »

  1.   

    这种用户图片的信息保存,我建议使用文件的方式,不要直接从profile文件或数据库获取,profile文件或数据库中仅保存用户的图片链接即可。这样比较节省数据服务器的容量,而且使用起来也比较方便,不用转来转去的
      

  2.   

    你专门写一个HttpHandler,例如是一个.ashx吧,该Handler负责将Image对象写入Response中(这种代码在论坛中搜索一下就有完整的版本)。然后在页面上还是通过<img src="Photo.ashx" />的形式引用该图片。
      

  3.   

    感谢benq2003的建议。找到一种方法:在普通的Page页面下,我们通过Profile.GetProfile(string name)来获得name的用户配置信息,实际上,该过程是调用ProfileBase.Create(string name)来创建用户配置的。因此,在IHttpHandler的实现里,可以使用ProfileBase.Create(string name)来获得。对于保存在数据库中还是保存在磁盘上,忘记说明了。Photo属于用户自己的私密信息,只允许管理员及用户自身查看。如果保存在磁盘上的话,容易被它人盗走。
      

  4.   

    顺便在问一个问题:asp.net默认ProfileProvider是否最有延迟加载的功能?即如以上例子,photo保存在数据库中。仅当用户需要调用该图片时ProfileProvider才从数据库中读取,否则不读取?
      

  5.   

    自己写一个membership provider吧