У меня есть служба WCF как часть клиент-серверного приложения, над которым я работаю. Пользователь нажимает кнопку на клиенте, и он вызывает службу для создания файла, а затем экспортирует этот файл в общий сетевой ресурс.
Это, очевидно, прекрасно работает при разработке, но при размещении на сервере я постоянно получаю следующее сообщение:
Access to the path '\\servername\folderpath\folder\filename.ext' is denied
Удаленная папка имеет очень разрешительные разрешения - все имеют полный контроль над этой папкой прямо сейчас. Служба также работает под учетной записью Active Directory, и этому пользователю также предоставлен полный контроль над папкой. При поиске в SO и на других сайтах это, похоже, было общей ошибкой, или проблемы были связаны с asp.net и IIS. Это служба Windows.
Вот пример моего довольно простого кода:
// export the file to path
string theFileContents = "why wont this save?";
string theFilePath = System.Configuration.ConfigurationManager.AppSettings["filelocation"];
using (StreamWriter file = new StreamWriter(theFilePath + accountNumber + ".ext"))
{
file.WriteLine(theFileContents);
file.Close();
}
и вот как я его настроил в app.config:
<add key="filelocation" value="\\server\folderpath\folder\"/>
Я совершенно уверен, что если я обновлю свой клиент, чтобы получить строку и записать ее в файл на общем ресурсе, он будет работать из-за этой настройки (как это происходит в процессе разработки или когда служба работает под моей учетной записью) в отладке в VS2010) - но я действительно не хотел, чтобы он совершил эту поездку - и просто переходил с сервера на сервер.