Это можно сделать, сохранив файлы в месте, недоступном для веб-пользователей, таком как папка, не обслуживаемая IIS, или база данных SQL Server с соответствующими элементами управления доступом.
Затем вы можете определить, авторизован ли пользователь, разрешив запрашивать файл несколькими различными способами, но, в конечном итоге, когда вы узнаете, что ваш пользователь авторизован и приобрел файл, вы можете отправить ему файл с помощью ответа. .записывать. См. Пример ниже для обслуживания из файловой системы:
Response.Clear();
Response.ContentType = "audio/mpeg3";
Response.WriteFile("d:\private-downloads\private.mp3");
Response.AddHeader("Content-Disposition", "inline;filename=private.mp3");
Response.End();