我一直在为保存配置文件敲打一整天,但无法完成它 我可以创建个人资料,删除,但不能编辑细节!
经过一段时间的忙碌之后,在查看SQL Server Profiler日志后,我知道我确实保存了详细信息,但不知何故,同样的sproc正在使用之前的细节更新记录!尝试调试,但页面或母版页面的页面加载事件都没有被击中!
db transaction可能有问题吗?但是我的代码没有事务处理功能,所以我怀疑它是否必须对回滚或类似的东西做任何事情!
这是我的代码,以防万一有人能找到错误!
的web.config
<profile defaultProvider="CustSqlProfileProvider" enabled="true">
<providers>
<add name="CustSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="connString" applicationName="/save_online"/>
</providers>
<properties>
<add name="FirstName" type="System.String"/>
<add name="LastName" type="System.String"/>
<add name="Email" type="System.String"/>
<group name="Address">
<add name="Street" type="System.String"/>
<add name="City" type="System.String"/>
<add name="PostalCode" type="System.String"/>
</group>
<group name="Contact">
<add name="Phone" type="System.String"/>
<add name="Mobile" type="System.String"/>
</group>
<add name="ShoppingCart" type="psb.website.BLL.Store.ShoppingCart" serializeAs="Binary" allowAnonymous="true"/>
</properties>
</profile>
码
private void UpdateProfile()
{
ProfileCommon myprofile = this.Profile.GetProfile(HttpContext.Current.User.Identity.Name);
myprofile.FirstName = tbFirstName.Text.Trim();
myprofile.LastName = tbLastName.Text.Trim();
myprofile.Email = tbEmail.Text.Trim();
myprofile.Address.Street = tbStreetPhysical.Text.Trim();
myprofile.Address.City = tbCity.Text.Trim();
myprofile.Address.PostalCode = tbPostalCode.Text.Trim();
myprofile.Contact.Phone = tbPhone1.Text.Trim();
myprofile.Contact.Mobile = tbMobile.Text.Trim();
myprofile.Save();
}
在SQL事件探查器跟踪
中 调用ProfileCommon的save()时,使用正确的值执行exec dbo.aspnet_Profile_SetProperties ,并且在页面加载完成后,使用先前的值再次执行相同的st.procedure。 第二次怎么称呼?!这真烦人!!
SQL Server Profiler中的这些数据会有帮助吗?
-- network protocol: LPC
set quoted_identifier on
set arithabort off
set numeric_roundabort off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set cursor_close_on_commit off
set implicit_transactions off
set language us_english
set dateformat mdy
set datefirst 7
set transaction isolation level read committed
更多信息: 管理员可以更新其他用户的个人资料信息,但无法更新自己的个人资料。而其他网站用户也无法更新他们的个人资料信息!
有多奇怪!
有人请保释我!
答案 0 :(得分:0)
这似乎与your other profile save question重复。无论如何,您最后不需要调用Save。如果您在配置中打开了自动保存功能,则会自动执行此操作。如果你想明确地调用Save,只需关闭那个设置,事情应该像你期望的那样工作。
答案 1 :(得分:0)
与this问题类似。