2013-08-02 6 views
1

Действие Методсобытий с MVC 4

public ActionResult Index() 
{ 
    ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application."; 
    LogError("lok", "lok2", "lok3"); 
    return View(); 
} 

LogError Метод

private void LogError(string transactionId, string sAmountPaid, string deviceId) 
     { 
      // Creating the source, which will generate error 
      if (!EventLog.SourceExists("MyApplication")) 
      { 
       //Creating log, where error will be logged 
       EventLog.CreateEventSource("MyApplication", "MyLog"); 
      } 

      // Creating object of EventLog to log error 
      var myAppLog = new EventLog { Source = "MyApplication" }; 

      //Writing error to log 
      myAppLog.WriteEntry(transactionId + sAmountPaid + deviceId); 
     } 

Когда я бегу Домашняя страница всегда показывает «Ошибка. Возникла ошибка при обработке ваш запрос.". Я подозреваю, что из-за невозможности создать журнал в «Event Viewer». Когда я запускаю код на локальном хосте, он работает отлично. Но когда я публикую его на сервере IIS в Windows Server 2012, он дает выше ошибки.

Мой вопрос: Должен ли я разрешать любые виды разрешений для создания журнала в Event viewer.If, как это сделать? Мой IIS работает на Windows Server 2012.

ответ

3

Об этом было задано ранее. Следующая ссылка на это обсуждение.

Writing to an event log in ASP.NET on Windows Server 2008 IIS7

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

Однако, это не рекомендуется по нескольким причинам.

  1. Не масштабируется.
  2. Представляет вектор атаки самому серверу, который может быть использован, если ваше приложение не защищено должным образом.
  3. приложения не могут быть размещены в «виртуальный хостинг» решение хозяина, и вы должны иметь доступ к ОС сама предоставлять эти (или систему, которая позволяет это, как Cpanel)

Альтернативы входа в окна события войти:

  1. Вход в базу данных или файлов
  2. в распределенной архитектуре, или системы на уровне предприятия, отправлять записи журнала событий в системе очереди, которая передает данные в систему агрегации.
+0

Да. Я согласился с вами. Я зарегистрировал свои тестовые данные в текстовом файле. Это только для тестовых сценариев. Позже я переведу его в DB. Спасибо за ваши отзывы. – Sampath

1

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

+0

Вы знаете, как это сделать для веб-приложения asp.net mvc? – Sampath

+0

Нет, я этого не делаю. Зависит от того, как вы развертываете. У нас есть огромный пользовательский установщик (всевозможные другие вещи, некоторые из которых требуют прав администратора). Вы могли бы просто сделать это (написать небольшое приложение для мальчиков ops) в качестве этапа ручного развертывания. –

+0

+1 для вашей поддержки. – Sampath