2016-08-17 15 views
1

Я хочу создать xml-файл. Я являюсь владельцем папки, которая будет содержать созданный файл. Мой код создает пустой файл, и когда я отладки я получаю ошибки доступа к этой линииC# Доступ запрещен для создания нового файла

Stream writeOutput = File.Create(Path.Combine(outputLocation, string.Format(FILEFORMAT, agent, Number, FILE_EXTENSIONS.XML))) 

Помогите пожалуйста

Вот мой код:

SPSecurity.RunWithElevatedPrivileges(delegate() 
    { 

     using (Stream writeOutput = File.Create(Path.Combine(outputLocation, string.Format(FILEFORMAT, agent, Number, FILE_EXTENSIONS.XML)))) 
       { 
       using (Stream xmlOutput = OutputFileCreator.CreateOutputXMLFile(Number, rejectionReason)) 
         { 
         byte[] buffer = new byte[xmlOutput.Length]; 
         xmlOutput.Position = 0; 
         xmlOutput.Read(buffer, 0, buffer.Length); 
         writeOutput.Write(buffer, 0, buffer.Length); 
         } 
       }  
    }); 

enter image description here

+0

Какой путь вы пишете? Если вы запускаете это на машине Windows, вам может потребоваться выполнить вашу программу с правами администратора (по умолчанию для любого пути из C: \ помимо ваших пользовательских папок) – Glubus

+0

Я редактирую свой пост с папкой и пустой созданный xml – BKChedlia

+0

Доступ отрицается ... довольно четкое сообщение. Пользователь, в котором работает программа, не имеет права на запись в папку. Поэтому убедитесь, что пользователь имеет доступ на запись к пути. –

ответ

1

You может потребовать, чтобы ваша машина имела доступ к папке, а не только к вашему пользователю. Попробуйте добавить права доступа для всех в свойствах папки или YourMachineName $, чтобы указать, что ваш физический компьютер имеет доступ.

+0

Я работаю на удаленной машине, и я создаю эту папку, если у меня нет права, не могли бы вы объяснить мне, как она создает файл, даже если он пуст? – BKChedlia

+0

Вы можете создать файл, но не писать в него? – uTeisT

+0

Я удаляю папку и воссоздаю ее и перезаписываю в C#, и теперь она работает ... спасибо – BKChedlia

2

Что такое идентификатор пула приложений, которым вы управляете это как?

SPSecurity.RunWithElevatedPrivileges(delegate() 

Вызывает, что блок кода запускается под идентификатором пула приложений, обладающим правами администратора семейства сайтов. Имеет ли эта личность соответствующие разрешения?

Смотрите здесь:

https://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx

+0

Да, я являюсь администратором веб-приложения – BKChedlia