У меня есть веб-приложение, которое обрабатывает файлы и записывает данные в базу данных. Этот процесс может занять до 2 минут. Допустим, это сделано на ProcessFile.aspx. Я хотел обеспечить целостность данных, поэтому обернул всю обработку базы данных в TransactionScope.
Проблема возникает, когда я обрабатываю файл и затем пытаюсь получить доступ к другой странице, которая также обращается к базе данных (просто читает некоторые данные с помощью оператора select). Я почти уверен, что это не связано с какой-либо блокировкой базы данных, так как когда я иду напрямую через SQL Server Management Studio, у меня нет проблем с выбором таблицы.
Я использую LinqToSQL. У меня есть ScriptManager на главной странице. Все страницы наследуются от этой главной страницы. ProcessFile.aspx имеет панель обновления, а на другой странице - нет.
Что мне здесь не хватает? Если потребуется дополнительная информация, прокомментируйте, и я обновлю вопрос.
РЕДАКТИРОВАТЬ 1: Я получаю это сообщение об исключении
Type : System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Source : .Net SqlClient Data Provider
Я открываю вторую страницу в отдельном окне браузера. Он просто продолжает загружаться, пока первая страница не закончит обработку файла, а затем загружается нормально.
Я не звоню с одной страницы на другую. Просто открыв другую страницу через другое окно браузера через адресную строку.
РЕДАКТИРОВАТЬ 2: Впервые я столкнулся с тем, что более чем один ответ решил мою проблему. Ответы Ремуса и Рика в совокупности решили это для меня. Я не знал, кого выбрать в качестве правильного ответа, поэтому подбросил монетку, и Рик выиграл. Извини, Ремус! Я не хотел давать это никому. Тем не менее, мне нужно было реализовать ОБА ответы, чтобы он работал.