Проблема приведения.
byte r = (byte) (b * b);
. Приводит тип (byte)
к результату (b * b)
byte r = (byte) b * b;
. только поэтому он станет ((byte) b) * b
Необходимо использовать раздел авторизации в web.config.
Чтобы заставить только определенные папки потребовать аутентификации, у Вас может быть web.config только с элементом авторизации в подпапках как так:
<configuration>
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
Включение и Анонимный Доступ и аутентификация Windows означает, что попробует Анонимный Доступ сначала, если это перестанет работать, то это отступит к аутентификации Windows. Если необходимо сделать обоих, можно или сделать, как предложено с web.config или поместить страницы, которые нуждаются в защите в подпапке в IIS и включают только аутентификацию Windows на этом.