Написать файл журнала - PullRequest
       4

Написать файл журнала

1 голос
/ 05 декабря 2011

У меня недавняя проблема. Я могу загрузить файл в мою intetpub / wwwrooot / folder

Но я не могу написать файл журнала в этой же папке ...

У меня есть все разрешения для сетевого сервиса. Все на моем сервере.

DirectoryInfo di = new DirectoryInfo(~/);

// Get a reference to each file in that directory.
FileInfo[] fiArr = di.GetFiles();


string strLogText = di;

// Create a writer and open the file:
StreamWriter log;

if (!System.IO.File.Exists("C:\\inetpub\\wwwroot\\logfile.txt"))
{
    log = new StreamWriter("C:\\inetpub\\wwwroot\\logfile.txt");
}
else
{
    log = System.IO.File.AppendText("C:\\inetpub\\wwwroot\\logfile.txt");
}

// Write to the file:
log.WriteLine(DateTime.Now);
log.WriteLine(strLogText);
log.WriteLine();

// Close the stream:
log.Close();

Ошибка в доступе запрещен!

Работает локально, но на моем сервере - нет. В папке Inetpub мне просто нужно разрешить запись для сетевого сервиса? Это странно, потому что я могу загрузить файл и запись уже включена

Ответы [ 3 ]

2 голосов
/ 05 декабря 2011

В случае исключений ваш код не закрывает потоки в файле журнала, и это, безусловно, не хорошо.

Вы должны использовать оператор using вокруг потоков, чтобы в любом случае потоки закрывались и удалялись также в случае исключений.

Как предположил Крис, я бы предпочел использовать каркас ведения журналов, а также избегать записи в эту папку wwwroot.

ELMAH или NLog или Log4Net являются хорошими и простыми альтернативами, намного лучше, чем любая другая пользовательская регистрация, которую вы делаете прямо сейчас, и большое преимущество этих технологий / библиотек заключается в том, что вы можете изменить поведение во время выполнения, просто отредактировав файл конфигурации, не нужно ничего перестраивать или заново развертывать ...

мой любимый на самом деле Log4Net, посмотрите на них простой пример того, как его использовать:

http://logging.apache.org/log4net/release/manual/configuration.html

Log4Net в объекте приложения?

0 голосов
/ 06 декабря 2011

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

0 голосов
/ 05 декабря 2011

В зависимости от версии вашего сервера (Windows 2008 и выше) этот каталог имеет дополнительную защиту от записи.

Я настоятельно рекомендую вам заглянуть в ELMAH , чтобы заняться регистрацией. Он дает вам ряд опций, в том числе в памяти или в базе данных, и собирает много дополнительных данных, которые вам могут понадобиться.

Кроме того, открытие различных физических каталогов для доступа к записи - это ОГРОМНАЯ защита №-нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...