如何在c#中处理CustomizedProvider

本文关键字:处理 CustomizedProvider | 更新日期: 2023-09-27 18:16:29

我在一个asp.net项目中遇到了一个奇怪的问题。实际上这不是我自己的代码,我正在研究别人的代码。此项目与会员资格提供程序绑定。问题是,每次当我运行这个项目时,它都会在aspnet_Profileaspnet_Users成员表中插入新行,如果我再次运行同一页面,那么它会更新这两个表列LastUpdatedDate in aspnet_Profile表和LastActivityDate in aspnet_Users表与当前日期和时间。

因此,我在这两个表中有超过1lac的条目。我想知道为什么会这样。我测试了代码,但没有找到任何解决方案,但我仍然认为这是因为web.cofig文件,因为在该文件中我们提到了会员提供程序。

我的会员资格提供程序是这样配置的:

<membership defaultProvider="CustomizedProvider">
  <providers>
    <clear/>
    <add name="CustomizedProvider"
         applicationName="B-School"
         type="System.Web.Security.SqlMembershipProvider"
         minRequiredPasswordLength="5" 
         connectionStringName="SchoolConnectionString" 
         enablePasswordRetrieval="false" 
         enablePasswordReset="true" 
         requiresQuestionAndAnswer="false" 
         passwordFormat="Hashed" 
         minRequiredNonalphanumericCharacters="1"
         />
  </providers>
</membership>

我的配置文件提供程序是这样配置的:

<profile >
  <providers>
    <clear/>
    <add name="AspNetSqlProfileProvider"
         connectionStringName="SchoolConnectionString"
         applicationName="LCI"
         type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         />
  </providers>
  <properties>
    <add name="Id"                 type="System.Int64" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue="0"/>
    <add name="Language_Ids"       type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Qualification_Ids"  type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Country_Id"         type="System.Int64" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue="0"/>
    <add name="City_Id"            type="System.Int64" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue="0"/>
    <add name="Price_Id"           type="System.Int64" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue="0"/>
    <add name="Gender_Ids"         type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="StudentAge_Ids"     type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Religion_Ids"       type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Facility_Ids"       type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Search_String"      type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Compare_School_Ids" type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
    <add name="Compare_Array"      type="System.Collections.ArrayList" provider="AspNetSqlProfileProvider" allowAnonymous="true"/>
    <add name="Title_String"       type="System.String" provider="AspNetSqlProfileProvider" allowAnonymous="true" defaultValue=""/>
  </properties>
</profile>

朋友们,请告诉我如何解决这类问题。

我想知道为什么每次调用它都会命中aspnet_Profileaspnet_Users

如何在c#中处理CustomizedProvider

web.config中的<profile>元素有一个[可选]属性automaticSaveEnabled

指定执行结束时是否自动保存用户配置文件一个ASP。网络页面。如果true,则在ASP执行结束时自动保存用户配置文件。网络页面。

默认值为 true

你可以猜猜接下来会发生什么。

修改你的<profile>元素,让它看起来像

<profile automaticSaveEnabled="false" ... >

你应该没事。

注意:但是,当您想实际将内容存储到后备存储时,必须显式调用ProfileBase.Save()