Я делал это много раз, генерируя guid и время истечения срока действия и сопоставляя их с фактическим местоположением файла. Это можно сделать в базе данных или в XML-файле, или как вы хотите.
Ссылка будет выглядеть примерно так:
http://www.mywebsite.com/getFile.aspx?id=0C65942EF7BE43892DE1DEEE00B51858
Затем вы просто пишете страницу, которая обслуживает файл, просматривая guid, сравнивая время истечения срока и, если все в порядке, подаете файл в браузер.
Это просто и может быть значительно улучшено, но концепция - это звук.
Удачи!