C# Restful WCF服务和LINQ

C# Restful WCF服务和LINQ,c#,linq-to-sql,iis-7,wcf-rest,C#,Linq To Sql,Iis 7,Wcf Rest,WCF Restful Web服务似乎以某种方式缓存LINQ数据对象 webservice是基于.NET 4.0构建的WCF Restful服务,目前正在本地ASP.NET开发服务器中运行 我有一个MSSQL 2008数据库,其中包含一系列有效的IP地址,Web服务使用LINQ进行验证。根据DB中可接受的IP范围验证客户机IP的机制在独立测试时成功运行 情景: 客户端IP为127.0.0.1 有效IP范围为:127.0.0.0至127.0.0.5 我执行了一个从Fiddler到webservic

WCF Restful Web服务似乎以某种方式缓存LINQ数据对象

webservice是基于.NET 4.0构建的WCF Restful服务,目前正在本地ASP.NET开发服务器中运行

我有一个MSSQL 2008数据库,其中包含一系列有效的IP地址,Web服务使用LINQ进行验证。根据DB中可接受的IP范围验证客户机IP的机制在独立测试时成功运行

情景: 客户端IP为127.0.0.1 有效IP范围为:127.0.0.0至127.0.0.5

我执行了一个从Fiddler到webservice的GET请求,它通过返回一个漂亮的200状态码来正常工作。然后我将DB中的范围更改为127.0.0.0到127.0.0.0,并且在我应该接收401状态代码时仍然接收200状态代码。然后,我转到VisualStudio,只需保存一个文件而不做任何修改,然后返回Fiddler并重新发出请求,现在我就得到了所需的401状态代码

在web服务中,我将缓存控制和Pragma头设置为响应中不存在缓存:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Fri, 30 Jul 2010 16:12:56 GMT
X-AspNet-Version: 4.0.30319
Pragma: no-cache
Content-Length: 1121680
Cache-Control: no-cache
Content-Type: application/xml; charset=utf-8
Connection: Close
或者


在我看来,LINQ进程中的某些东西正在缓存它最初从第一个请求返回的数据,而不是为每个后续请求返回DB。一旦我将任何文件保存到web服务上,它会导致重新编译服务,并因此执行另一次查找以获取数据。

您是否能够直接测试LINQ to SQL调用,而不必通过web服务,只是为了验证LINQ to SQL可能正在为您执行缓存

此外,这里还有一个类似于您的问题的解决方案,要求您禁用对象跟踪。数据上下文中此属性的默认值为true。该职位的相关部分:

您的解决方案是禁用对象 跟踪服务器的LINQ缓存 像这样的数据上下文。 myContext.ObjectTrackingEnabled= 虚假的


希望这有帮助

您的数据库是否正在缓存结果?您可能需要记录并查看LINQ数据对象中的内容,以缩小它是否位于数据库层或堆栈中更高的位置。。。将objecttrackingenabled属性设置为false解决了我的问题。非常感谢!!!该死,我想这会让数据变成“只读”。我还需要插入数据,以便在齿轮中插入扳手。。
HTTP/1.1 401 Unauthorized
Server: ASP.NET Development Server/10.0.0.0
Date: Fri, 30 Jul 2010 16:26:48 GMT
X-AspNet-Version: 4.0.30319
Pragma: no-cache
Content-Length: 88
Cache-Control: no-cache
Content-Type: application/xml; charset=utf-8
Connection: Close