Ну, Math.Round
хочет double
, а не float
, поэтому
Math.Round(ff, 1, MidpointRounding.AwayFromZero);
равняется
Math.Round((double)ff, 1, MidpointRounding.AwayFromZero);
и если мы проверяем (double)ff
значение
Console.Write(((double)ff).ToString("R"));
мы увидим ошибки округления в действии
31.149999618530273
Наконец, Math.Round(31.149999618530273, 1, MidpointRounding.AwayFromZero) == 31.1
как и ожидалось
Самая большая угроза безопасности предоставления полномочий записи Учетной записи Сетевой службы к папкам испытана в Общем Хостинге или когда Вы выполняете несколько веб-сайтов на том же сервере.
В основном, если Вы предоставляете, изменяют полномочия затем любое приложение ASP.NET, что сервер, настроенный для выполнения как Сетевая служба (все по умолчанию), будет также иметь полномочия записи к той папке, которая могла быть использована.
хорошо непосредственная опасность является сетевой службой, может чтение-запись к тем папкам, конечно, но на Microsoft - Эта учетная запись является наименее привилегированной учетной записью машины с ограниченными полномочиями. Если Вы находитесь на домене, лучший подход может быть должен использовать учетную запись домена - подробная информация об обоих может быть найдена по http://msdn.microsoft.com/en-us/library/ms998320.aspx
Опасность сделать это состоит в том, что Сетевая служба является общей учетной записью и любым приложением, или сервис, работающий в соответствии с этой учетной записью, имел бы доступ к тому каталогу.
В зависимости от того, какую версию IIS Вы используете, можно поместить веб-приложение в пул отдельного приложения и иметь выполненный под другой учетной записью пользователя. Затем можно предоставить доступ конкретно тому пользователю и не Сетевой службе. Это только доступно в IIS 6 или позже.
Хорошо, поэтому если я могу выяснить, как заставить Ваше приложение писать файл в файловую систему, потому что Вы предоставили чтение-запись виртуальному каталогу целого приложения, я могу теперь записать aspx файл Вы Ваш веб-сайт, вызвать его и выполнить произвольный код, включая прохладные вещи как вызовы WMI и взаимодействующий с COM.
У Вас есть время и ресурсы, чтобы окончательно доказать, что я не могу использовать Ваше приложение (который включает части, которые Вы не записали, такие как сама платформа) записать файл Вам веб-сайт? Почему не только устраняют возможность, когда настолько дешево (timewise) установить ntfs полномочия?
Теперь, если Вы предоставляете право только на App_Data, даже если бы я действительно писал aspx файл в ту папку, то я не смог бы вызвать его, потому что папку App_data рассматривает как особенную время выполнения и не будет служить никаким файлам оттуда (чтобы это кто-то просто не называет http://yourserver.com/app_data/data.mdb и взламывает Ваш дб путем простой загрузки файла). Очевидно, они регистрируют в App_Data, может быть достигнут при помощи ADO и т.п., но это не проблема безопасности.