Я могу придумать 4 способа сделать это:
1: Немного хакерский, но вы можете попробовать использовать "технику истечения срока действия кэша", описанную здесь:
http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/
Короче говоря, вы полагаетесь на механизм истечения срока действия кэша ASP.NET для запуска некоторого кода в установленное время. В вашем случае вы можете установить время окончания аукциона в момент его создания. Однако это ненадежно, что если вы перезагрузите сервер? Вы можете сказать до свидания к вашему кешу. Но если вы используете общую службу, у которой нет доступа к серверу, это может быть вашим решением.
2: Чуть лучше, вы можете написать страницу .aspx и вызывать ее из планировщика задач Windows каждые X минут, чтобы запустить ваш код. Проблема здесь в том, что вам нужно будет выполнить публичную страницу. Может быть проблемой безопасности.
3: Гораздо лучше, вы можете написать службу Windows. Но это может быть слишком много работы, если вам не хватает времени.
4: Посмотрите на Quartz.NET, это порт .NET одноименного отраслевого стандартного Java-проекта. Я не пробовал, но выглядит многообещающе.