2010-06-26 2 views
0

Я использую следующий код, чтобы открыть файл XML, так что я могу использовать его для управления содержанием:политики безопасности Исключение пытается получить доступ к файлу в ASP.NET

//Initialize and load xmlDoc 
    XmlDocument XMLDoc = new XmlDocument(); 
    XMLDoc.Load("E:\\foldername\\Content.xml"); 
    FileStream fileStrm = new FileStream("E:\\EightFoldDev\\Content.xml", FileMode.Open); 
    XMLDoc.Load(fileStrm); 
    fileStrm.Close(); 

Однако я получаю сообщение об ошибке:

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

System.Security. Sec urityException: запрос на разрешение типа «System.Security.Permissions.FileIOPermission, mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089« не удалось ».

Я искал информацию в Интернете, но пока не смог найти решение. Я попытался добавить следующее в web.config, но не повезло.

<securityPolicy> 
    <trustLevel name="Full" policyFile="internal"/> 
</securityPolicy> 

Она работает на моей локальной машине нормально, но когда я нажимаю его на сервер (хостинг, предоставленной WinHost), я получаю сообщение об ошибке. Поэтому я уверен, что мне что-то недостает в разрешениях.

Любая помощь приветствуется!

+0

Кстати, вы понимаете, что загружаете «XmlDocument», а затем перезаписываете? –

+1

Я читал блоги о людях, устанавливающих DotNetNuke на WinHost с ошибками Permission, и им нужно установить уровень доверия на средний и обратно до полного, прежде чем он сработает. – N0Alias

+0

.... теперь я делаю LOL, это была долгая ночь. Я попробую то, что вы упомянули DaMartyr – CTDev

ответ

1

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

Кроме того, я не мог использовать прямой путь без проблем («E: \ foldername \ Content.xml»). Относительные пути, казалось, пытались начать с C: независимо от того, что я сделал. Кажется, что это ТОЛЬКО при вызове метода XMLDocument Load.

0

Поскольку ваше приложение работает в ASP.NET, работающем с частичным доверием (возможно, со средним), вы не можете указать физический путь outisde корневой папки вашего приложения. Итак, вам нужно будет настроить его примерно так: XmlDocument XMLDoc = новый XmlDocument(); XMLDoc.Load (Server.MapPath ("~/App_Data/Content.xml"));

+0

Я фактически пробовал относительный путь до этого, но не сделал этого, т работы. Я просто попытался переместить Content.xml в папку app_data и изменить код, чтобы ссылаться на него, но не повезло. Такая же ошибка – CTDev

Смежные вопросы