Столкнулся с интересной проблемой веб-службы WCF Restful, которую я пишу.Кажется, что-то кеширует объекты данных LINQ.Я постараюсь объяснить ...
Это мое первое занятие веб-сервисами, и я не эксперт по LINQ, поэтому, если я плохо объясню это, пожалуйста, держитесь со мной ...
Веб-сервисявляется сборкой WCF-службы Restful на .NET 4.0 и в настоящее время выполняется на моем локальном сервере разработки ASP.net.
У меня есть база данных MSSQL 2008, которая содержит диапазон допустимых IP-адресов, которые веб-служба использует LINQ для проверкипротив.Механизм, который проверяет IP-адрес клиента в соответствии с допустимым диапазоном IP-адресов из БД, успешно работает как независимо протестированный.
СЦЕНАРИЙ: IP-адрес клиента составляет 127.0.0.1, допустимый диапазон IP-адресов: от 127.0.0.0 до 127.0.0.5
Я выполняю запрос GET от Fiddler к веб-сервису, и он работает как надо, возвращая мне хороший код состояния 200.Затем я изменяю диапазон в БД с 127.0.0.0 на 127.0.0.0 и все еще получаю 200 кодов состояния, когда я должен получить 401 код состояния.Затем я иду в Visual Studio и просто сохраняю файл (без каких-либо изменений), возвращаюсь в Fiddler и повторяю запрос, и теперь я получаю требуемый код состояния 401.
В веб-службе я устанавливаю Cache-Заголовки Control и Pragma для «no-cache», присутствующие в ответе:
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 кешируетданные, которые он первоначально получил от первого запроса и не возвращается в БД для каждого последующего запроса.Как только я сохраняю любой файл в веб-сервисе, он вызывает перекомпиляцию сервиса и, таким образом, выполняет другой поиск для получения данных.
Кто-нибудь когда-либо видел подобную ситуацию раньше?