У меня есть веб-сайт, который использует выдачу себя за другое лицо. Когда мой анонимный пользователь настроен на IUSR, а идентификатор пула приложений установлен на NetworkService, некоторые страницы не отображаются. Я получаю пустую страницу без сообщения об ошибке.
Если я помещаю анонимного пользователя как ApplicationPoolIdentity и помещаю идентификатор пула в localSystem, он работает нормально.
Если я поставлю анонимного пользователя администратору, он будет работать нормально.
Я знаю, что у меня проблема с безопасностью, но я не знаю, в какой папке мне нужно установить политику безопасности, чтобы все работало нормально.
Я предоставил доступ на чтение / запись к папке веб-сайта для IUSR, IIS_IUSRS, сетевой службы и группы моего вымышленного пользователя.
Кто-то понял, что случилось с моего разрешения?
Я тоже нашел эту статью, но безуспешно .. http://blogs.iis.net/webtopics/archive/2009/03/13/changes-to-application-pool-identities-in-iis-7-5-beta.aspx
Я нашел проблему.
http://forums.asp.net/p/1459236/3386036.aspx
Есть проблема
Microsoft подтвердила, что это ошибка в .Net Framework 2.0, 3.0 и 3.5. Ниже приводится цитата из электронного письма, которое я получил от них:
"
Проблема, которую мы наблюдаем, действительно является ошибкой, и ниже приводится ее объяснение.
Резюме «Объект Params представляет собой коллекцию объектов QueryString, Form, Cookies и ServerVariables. Когда объект params создается впервые, он добавляет каждый из этих объектов в свою коллекцию в методе FillInParamsCollection. Первым сохраняемым объектом является объект Объект QueryString. Если этот объект еще не создан, а в нашем случае это не так, конструктор этого объекта пытается заполнить объект QueryString. Во время этого процесса он получает кодировку, вызывая метод GetEncodingFromHeaders () в HttpRequest. Этот метод специально ищет User-Agent, который начинается с «UP». В этом случае он пытается получить заголовок «x-up-devcap-post-charset» из коллекции Headers. Однако, поскольку коллекция Headers еще не инициализирована он также выполняет свою процедуру инициализации. Одна из вещей, которые выполняет его процедура инициализации, устанавливает коллекцию Params в значение NULL. Это то, что вызывает AV, когда метод FillInParamsCollection пытается инициализировать nex t после объекта QueryString. "
Обходной путь Предварительно инициализируйте объект QueryString, чтобы избежать проблемы. Просто откройте Request.QueryString (). Нам не нужно с этим ничего делать, просто получите к нему доступ.
образец:
Object o = context.Request.QueryString;
NameValueCollection parameters = context.Request.Params;
"
Решение заключалось в прямом использовании в коде Request["Value"]
и нет Request.Params["Value"]
Пожалуйста, обратитесь к статье Создание безопасных приложений ASP.NET: аутентификация, авторизация и безопасная связь.
Это даст вам лучшее представление об удостоверении, используемом вашим приложением ASP.NET при олицетворении. Дайте необходимое разрешение и все будет хорошо.
HTH