Самое простое решение - изменить программу, которая обновляет файл, чтобы сохранить эту новую информацию в базе данных, а не в файловой системе.
Но если вы не можете использовать базу данных, я бы выбрал другой подход, сохраняйте содержимое файла в System.Web.Caching.Cache со временем, когда оно было изменено в последний раз, и затем проверяйте, изменился ли файл, если не используется кэшированная версия, и если было изменено хранение нового содержимого и времени в той же переменной кэша.
Конечно, вам нужно будет проверить, можете ли вы прочитать файл, и только затем обновить содержимое кэша, а если вы не можете прочитать файл, вы можете просто получить последнюю версию из кэша.
Первоначальное чтение файла должно быть в application_start, чтобы гарантировать инициализацию кэша, и там вам придется подождать, пока вы не сможете прочитать файл, чтобы сохранить его в кэше в первый раз.
Лучший способ проверить, что вы можете прочитать из файла, - перехватить исключение, потому что блокировка может произойти после вашей проверки, см. Этот пост: Как проверить блокировку файла?