如何在c#中处理CustomizedProvider
本文关键字:处理 CustomizedProvider | 更新日期: 2023-09-27 18:16:29
我在一个asp.net项目中遇到了一个奇怪的问题。实际上这不是我自己的代码,我正在研究别人的代码。此项目与会员资格提供程序绑定。问题是,每次当我运行这个项目时,它都会在aspnet_Profile
和aspnet_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_Profile
和aspnet_Users
表
web.config
中的<profile>
元素有一个[可选]属性automaticSaveEnabled
。
指定执行结束时是否自动保存用户配置文件一个ASP。网络页面。如果true,则在ASP执行结束时自动保存用户配置文件。网络页面。
默认值为 true
。
你可以猜猜接下来会发生什么。
修改你的<profile>
元素,让它看起来像
<profile automaticSaveEnabled="false" ... >
你应该没事。
注意:但是,当您想实际将内容存储到后备存储时,必须显式调用ProfileBase.Save()
。