Лучше всего будет использовать службу Windows, которая обрабатывает синхронизированные события.Использование System.Threading.Timer в ASP.NET - это плохо;Это МОЖЕТ работать в вашем случае, потому что вносимые изменения не влияют непосредственно на пользовательский интерфейс, но я бы не стал ставить, что они работают безупречно.Если вам нужно планировать события в фоновом режиме веб-приложения, используйте серверное приложение.
Следует помнить одну вещь;у вас может быть сотни или тысячи открытых аукционов одновременно.Если вы установите таймер на каждом аукционе, когда он открывается, у вас будут сотни или тысячи спящих потоков, управляемых этим сервером.Я бы посмотрел только те аукционы, которые закончатся до следующего обычного опроса, и установлю таймеры только для этих аукционов.Это привело бы вас к нескольким десяткам ожидающих потоков.Однако, если вы пишете следующий eBay, то даже он задохнется, когда вы получите сотни тысяч или миллионы аукционов, и несколько сотен или тысяч начинаются и заканчиваются каждую минуту.