如何在C#中处理CustomizedProvider

时间:2014-08-05 06:49:16

标签: c# asp.net-membership membership-provider

我在一个asp.net项目中遇到了一个怪胎问题。实际上这不是我自己的代码,我正在研究别人的代码。此项目与成员资格提供程序绑定。问题是,每次运行此项目时,它都会在aspnet_Profileaspnet_Users成员资格表中插入新行,如果我再次运行同一页面,则会更新这两个表列{{1}表格和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_Profile表。

1 个答案:

答案 0 :(得分:1)

<profile>中的web.config元素具有[可选]属性automaticSaveEnabled。它

  

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

其默认值为 true

你可以猜到当时会发生什么。

将您的<profile>元素修改为类似

的元素
<profile automaticSaveEnabled="false" ... >

你应该没问题。

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