Я столкнулся с этой самой проблемой некоторое время назад, пытаясь понять, почему некоторые установки IIS будут работать, перенаправляя /default.aspx, а некоторые вырождаются в терминальный цикл.
Я нашел ответ, был ли asp.net отображен 'подстановочный знак' для выполнения всех запросов в IIS.
Проще говоря, если у вас есть готовая установка IIS, он всегда будет добавлять документ по умолчанию к любому запросу на корень сайта. Таким образом, example.com становится example.com/default.aspx при проверке Request.Url в ASP.NET. Поэтому, если вы обнаружите эту ситуацию и попытаетесь перенаправить ее обратно на сайт example.com, IIS сделает это, добавит /default.aspx, и ваш код будет зациклен на своем собственном создании.
Исключением является случай, когда вы настроили отображение с подстановочными знаками, чтобы все запросы обрабатывались через конвейер asp.net. В этом случае IIS больше не добавляет документ по умолчанию к каждому запросу на уровне Request.Url. И, таким образом, вы можете сделать перенаправление.
Я поместил все это в этом сообщении в блоге: 301 Перенаправление из /default.aspx в корень сайта - последнее слово - но это было написано несколько лет назад, и изменения в IIS7, возможно, решили проблему в соответствии с принятым в настоящее время ответом.
Но если вы боретесь с этой проблемой, то лучше посмотреть на состояние подстановочного сопоставления.