Исключение безопасности ASP.NET WebPermission
Я обычно ненавижу публиковать подобные вопросы, потому что обычно я нахожу, что лучший способ действительно научиться - это найти ответ самостоятельно.
Однако мне нужен ответ на этот вопрос очень быстро, так как у меня есть клиент, который не может вести свой бизнес из-за этой проблемы.
Вчера мой хост-провайдер ASP.NET переместил мое приложение с сервера под управлением.NET 1.1 на сервер под управлением.NET 1.1 и 2.0. Моя проблема в том, что при тестировании перемещения главная страница сайта (Default.aspx) не загружается
"Описание: приложение попыталось выполнить операцию, не разрешенную политикой безопасности. Чтобы предоставить этому приложению необходимое разрешение, обратитесь к системному администратору или измените уровень доверия приложения в файле конфигурации.
Сведения об исключении: System.Security.SecurityException: запрос на разрешение типа 'System.Net.WebPermission, System, Version=2.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089' не выполнен. '
[SecurityException: запрос разрешения типа 'System.Net.WebPermission, System, Version=2.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089' завершился неудачей.] System.Security.CodeAccessSecurityEngine.Check(Требование объекта, StackCrawlMark& stackMark, Boolean isPermSet) +0 System.Security.CodeAccessPermission.Demand() +59 System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint) +147 System.Net.HttpRequestCreator.Create(Uri Uri) +26 System.Net.WebRequest.Create(Uri requestUri, логическое useUriBase) +298 System.Net.WebRequest.Create(Uri requestUri) +28 System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri) +30 System.Web.Services.Protocols.Het.GetWebRequest(Uri uri) +12 System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri) +4 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(параметры метода String methodName, Object[ПилбилсПлюсПлюсПлюсПилПлюсПлюсыПилПлисыПилотыПлицПилоты)].PilatesPlus.InsertException(String sModuleName, String s Исключение, Int32 iUserID) +97 PilatesPlusDublin.MainDefault.Page_Load(Отправитель объекта, EventArgs e) +144 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +47 Система.Web.UI.Page. Web.UI.Page.ProcessRequestWithNoAssert(контекст HttpContext) +18 System.Web.UI.Page.ProcessRequest(контекст HttpContext) +49 ASP.maindefault_aspx.ProcessRequest(контекст HttpContext) +4 System.Web.CallHandpExPlication для выполнения.IExecutionStep.Execute() +358 System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логический и завершенный синхронно) +64"
Если WebPermission недоступен на хостинг-сайте, как мне настроить свой сайт, чтобы разрешить доступ к странице? Есть ли какие-то теги, которые нужно поместить в файл web.config? Примечание. У нас нет доступа к machine.config или другим настройкам IIS.
Я понимаю, что люди ненавидят читать и отвечать на такие вопросы, но любая помощь по поводу того, что я или мой хостинг-сайт нужно сделать, чтобы это исправить, была бы очень признательна.
4 ответа
Не уверен, поможет ли это, но у меня когда-то был клиент с такой же проблемой. Их веб-хостинг компания внесла некоторые изменения, в результате чего их веб-сайт выбрасывает подобные ошибки. Удалось снова заработать, добавив следующее прямо в разделе System.Web в web.config:
<trust level="Full" />
Если это не решит вашу проблему и веб-хостинг не сможет исправить их до нового года, я бы серьезно подумал о смене хостинг-провайдеров.
Я публикую это на тот случай, если это поможет кому-то еще. Будьте предупреждены, прежде чем они перенесут существующий сайт ASP.NET, размещенный вашим провайдером, на другой сервер.
УБЕДИТЕСЬ, ЧТО ВЫ СПРАШИВАЕТЕ О ВЕБПЕРМИССИЯХ И УРОВНЯХ ДОВЕРИЕ.
Это был мой ответ провайдеров....
"Спасибо за ваше письмо.
Это сбой, потому что WebPermission не доступен в среде среднего доверия.
В настоящее время мы не можем вносить изменения в эти серверы, так как к концу этого года планируем перенести все сайты в пару новых кластеров. Я уверен, что в новом кластере Windows будет доступна WebPermission, поскольку она включена в текущем кластере Namesco Windows. "
Поэтому они ожидают, что сайт моего клиента будет отключен и потеряет бизнес до Нового года.
Так же, как к сведению тех, у кого может быть такая же проблема - я получил это точное сообщение об ошибке и не смог выяснить, что случилось, так как я не изменил никаких настроек на своем локальном ящике.
Через пару минут я понял, что случайно открыл проект из общего сетевого ресурса на Windows Server 2008. Конечно, разрешения не были правильными! Действительно глупый ход, но если кому-то это поможет, я готов быть униженным:)
Ваше веб-приложение вызывает веб-сервис или получает доступ к внешним веб-сайтам? В этом случае вам может потребоваться поговорить с вашим хостинг-провайдером и попросить добавить URI в список разрешенных конечных точек подключения.