System.Security.SecurityException: не удалось выполнить запрос на разрешение принципала

Может ли кто-нибудь помочь указать мне правильное направление, как я могу исправить эту ошибку?

System.Web.Services.Protocols.SoapException: Server was unable to process request. 
     ---> System.Security.SecurityException: Request for principal permission failed.
at System.Security.Permissions.PrincipalPermission.ThrowSecurityException()
at System.Security.Permissions.PrincipalPermission.Demand()
at System.Security.PermissionSet.DemandNonCAS()
at LiveDocx.MailMerge.SetLocalTemplate(String template, String format)

Я установил это программное обеспечение, которое моя компания приобрела у LiveDocx. Итак, у меня нет возможности изменять код или даже читать код. Я установил все в соответствии с их документацией, и сайт работает. Я могу изменить только настройки в IIS, права доступа к папкам и Web.config. Наш сервер, их программное обеспечение.

Теперь у меня проблема с сохранением входа в веб-сервис. Прежде чем вы подумаете, что это мыльный клиент, я убедился, что он работает, позвонив на серверы поставщика.

Локально я могу успешно вызвать веб-службу во время входа в систему, и она отлично работает. Однако, когда я делаю следующий вызов, я получаю Request for principal permission failed.

По просьбе их технической поддержки я добавил <trust level="Full" /> в web.config, но это не сработало. Теперь они перестали отвечать на наши письма.

Я не разработчик ASP.NET, поэтому мои знания о настройках сервера ограничены. Может ли кто-нибудь указать мне правильное направление, почему возникает эта ошибка, и несколько мест, где можно найти решение этой проблемы?


person brady.vitrano    schedule 11.01.2012    source источник


Ответы (5)


Я наконец нашел решение. Эта ошибка о разрешениях немного вводит в заблуждение. После множества проб и ошибок я наконец признал, что разрешения пользователя пула приложений не имеют ничего общего с этой проблемой. Это заставило меня исследовать настройки web.config, и именно здесь я обнаружил проблему.

Проблема заключалась в том, что в предоставленном файле web.config отсутствовал тег <authentication> и необходимые настройки. Этот тег (насколько я понимаю) включает файлы cookie. Я надеюсь, что это поможет другим с этой ошибкой, даже если это не связано с LiveDocx. Кажется, Request for principal permission failed. может быть вызвано различными причинами, что делает эту ошибку неприятной.

Эта статья оказалась очень полезной.

person brady.vitrano    schedule 18.01.2012

Я подозреваю личность пользователя, выполняющего запрос, который, скорее всего, является пользователем пула приложений ASP.Net для веб-сайта, на котором работает ваше приложение IIS.

Самый простой способ проверить это — создать новый пул приложений для вашего приложения IIS (если в текущем пуле приложений нет других приложений), выбрать другое удостоверение для пула приложений (вы можете начать с сетевой службы, но требуется локальный пользователь), затем назначьте свое приложение этому пулу.

Это должно сказать вам, если это проблема разрешений с идентификатором пула приложений.

person competent_tech    schedule 11.01.2012
comment
Да, это не пул приложений, я перепробовал всех возможных пользователей и дал полные права каждому пользователю. - person brady.vitrano; 11.01.2012

Я столкнулся с этим, потому что у меня было приложение на веб-сайте, настроенное на использование неправильного имени файла cookie.

Web.config на моем корневом веб-сайте выглядел так

<authentication mode="Forms">
  <forms name="AuthCookie" path="/"></forms>
</authentication>

и приложение под ним имело web.config, который выглядел так

<authentication mode="Forms">
  <forms name="WRONGCOOKIENAME" path="/"></forms>
</authentication>

Приложение имело веб-форму с конструктором, который выглядел так

[PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Foo", Authenticated = true)]

Таким образом, требовалась аутентификация, но ее не было, потому что имя файла cookie было неправильным. Исправление имени файла cookie устранило ошибку.

person mhenry1384    schedule 14.08.2012

У меня была аналогичная проблема, и я использовал приложение форм и продолжал получать эту проблему. Я также использовал основное разрешение и требование безопасности.

Я попробовал все настройки, связанные с web.config, и последняя проблема была связана с пулом приложений.

Если вы переносите приложение с WinXP на Win7 и другую более позднюю версию, вы можете увидеть, что существует управляемый конвейер, который по умолчанию указывает веб-сайту на интегрированный режим. Я изменил это на классический режим, который устранил проблему. Надеюсь, это поможет участникам, которые пытаются перенести приложение с WinXp на Win7.

person Sofin S    schedule 04.10.2016

После множества проб и ошибок, связанных с чтением всех блогов и постов с ответами, я все еще не смог решить эту проблему.

Наконец, я подозреваю кое-что в моем проекте.

Мы являемся продуктом DevExpress, срок действия которого истек через несколько дней, поэтому, согласно моему предположению, он должен быть Лицензирован, поэтому мы приобрели лицензию на то же самое, теперь он начал работать нормально.

P.S. Если вы используете какой-либо лицензионный продукт, вы также можете получить эту ошибку. Так что также проверьте лицензию.

person Smit Patel    schedule 05.06.2020