2010-07-30 4 views
1

내가 쓰고있는 WCF의 안정적인 웹 서비스와 관련된 흥미로운 문제가 있습니다. 그것은 어떻게 든 LINQ 데이터 개체를 캐싱 것으로 보인다. 나는편안한 WCF 서비스 및 LINQ

웹 서비스는 WCF 평안한입니다 ...

이 웹 서비스에 첫 벤처이다 ... 설명하려고 내가이 나와 함께 베어하시기 바랍니다 설명에서 가난한 나는 경우 있도록 LINQ 전문가가 아니다 것 서비스는 .NET 4.0에서 빌드되며 현재 로컬 ASP.net Dev Server에서 실행 중입니다.

webservice가 유효성을 검사하기 위해 LINQ를 사용하는 일련의 유효한 IP 주소를 포함하는 MSSQL 2008 데이터베이스가 있습니다. DB로부터 허용 가능한 IP 범위에 대해 클라이언트 IP의 유효성을 검사하는 메커니즘은 독립적으로 테스트 된대로 성공적으로 작동합니다.

시나리오 : 클라이언트 IP는 127.0.0.1에게 있습니다 유효한 IP의 범위는 다음과 같습니다

내가 웹 서비스에 피들러에서 GET 요청을 수행 127.0.0.5에 127.0.0.0과 저를 제공함으로써, 정상적으로 작동 좋은 200 상태 코드를 되찾아 라. 그런 다음 DB의 범위를 127.0.0.0으로 127.0.0.0으로 변경하고 401 상태 코드를받을 때 200 개의 상태 코드를 수신합니다. 그런 다음 Visual Studio로 가서 수정없이 파일을 저장하고 Fiddler로 돌아가서 요청을 다시 발행하면 이제 원하는 401 상태 코드가 표시됩니다. 나는 캐시 제어 및에서 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 

또는 ..

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 

것 같다 나에게 LINQ 프로세스의 어떤 것이 원래 첫 번째 요청에서 가져온 데이터를 캐싱하고 이후의 각 요청에 대해 DB로 돌아 가지 않습니다. 웹 서비스에 파일을 저장하면 서비스를 다시 컴파일하여 다른 조회를 수행하여 데이터를 가져옵니다.

이런 상황을 본 사람이 있습니까?

+0

데이터베이스가 결과를 캐싱 할 수 있습니까? LINQ 데이터 개체가 데이터베이스 계층에 있거나 스택의 어느 지점에있는 경우 범위를 좁히려면 LINQ 데이터 개체에 기록하고보고 싶을 수 있습니다. –

답변

0

웹 서비스를 거치지 않고 직접 LINQ-to-SQL 호출을 테스트 할 수 있습니까? LINQ-to-SQL이 캐싱을 수행하고 있는지 확인할 수 있습니까?

또한 여기에 link과 비슷한 문제가 있으며 개체 추적을 사용하지 않도록 설정해야합니다. 데이터 컨텍스트에서이 속성의 기본값은 true입니다. 포스트의 관련 섹션 :

귀하의 솔루션은 지금처럼 데이터 컨텍스트의 개체 추적 (LINQ에 대한 캐싱)을 해제하는 것입니다. myContext.ObjectTrackingEnabled = false;

희망이 있습니다.

+0

남자 Stackoverflow를 좋아해요 ... "objecttrackingenabled"속성을 false로 설정하면 내 문제가 해결되었습니다. 정말 고마워!!! – nokturnal

+0

괜찮습니다! 다행 당신을 위해 일하고있다 !! –

+0

젠장,이게 데이터를 '읽기 전용'으로 만든 것 같아. 기어에 렌치를 던지도록 데이터를 삽입해야합니다. – nokturnal