在c#中使用asp.net MVC,我使用Linq将存储过程调用到我的SQL成员表中。我没有内部缓存的应用程序,已经检查,以确保它关闭。使用Linq ASP.NET MVC奇怪的缓存问题
测试案例: 我将我的用户名设置为test1。在网站上,我将用户名更改为test2。该网站仍显示test1。我去了Management Studio并运行名为MemberByEmail的存储过程,它正确显示了test2。
我开始简单,刷新我的页面,看看它是否是浏览器缓存,仍然是test1。我去调试和遍历代码,并发现它去正确地一路这里调用数据库:
/// <summary>Method that is mapped to the dbo.MemberByEmail database procedure.</summary>
/// <returns></returns>
[System.Data.Linq.Mapping.Function(Name="dbo.MemberByEmail")]
public System.Data.Linq.ISingleResult<BookCrossing.Data.Member> MemberByEmail(
[System.Data.Linq.Mapping.Parameter(DbType="nvarchar(100)")] string email)
{
var methodInfo = (System.Reflection.MethodInfo)System.Reflection.MethodInfo.GetCurrentMethod();
var result = this.ExecuteMethodCall(this, methodInfo, email);
return ((System.Data.Linq.ISingleResult<BookCrossing.Data.Member>)(result.ReturnValue));
}
我打开探查我的SQL数据库,它实际上显示MemberByEmail条目,并且返回的结果集具有username = test1。
我再次通过Management Studio运行存储过程,并且它以test2作为用户名。我等了15分钟,每隔5次刷新一次网页,并且它从未清除过,并从db中提供正确的test2。最后一个奇怪的部分,我运行IISReset并刷新页面,test2被返回。
我猜这个我只是忽略了一些明显的东西。任何帮助或建议都会很棒。谢谢
更新:我创建了一个控制台应用程序来取出它的web部分。直接从控制台应用程序访问时,问题也是一样,没有变化。
您是否缓存网页?在页面指令中,您可以设置缓存... – 2010-09-08 05:41:39
感谢您的评论。页面缓存已关闭。我已经开启了调试过程,并逐步排除了这一过程,并将其排除在外。它一路走到SQL(探查器有它的记录),当它回来时,我可以用username = test1而不是test2来查看我的成员对象。 – Matt 2010-09-08 12:53:16