2013-08-02 53 views
1

操作方法事件查看器日誌中創建錯誤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); 
     } 

當我運行主頁總是顯示「錯誤。而處理髮生錯誤你的申請。」。我懷疑這是由於無法在「事件查看器」上創建日誌。當我在本地主機上運行上面的代碼時,它工作正常。但是當我將它發佈到Windows Server 2012上的IIS服務器時,它出現上述錯誤。

我的問題:我應該啓用任何類型的權限來創建登錄事件查看器。如果是這樣怎麼做?我的IIS正在使用Windows Server 2012.

回答

3

這已經被問過。以下鏈接是針對該討論。

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

你需要給應用程序的權限來寫入Windows事件日誌。

但是,由於以下幾個原因,不推薦這樣做。

  1. 不縮放。
  2. 向服務器本身引入攻擊媒介,如果您的應用程序未正確保護,可能會被利用。
  3. 應用程序無法在「共享主機」主機解決方案託管,你就必須有訪問操作系統本身對這些(或一個系統,使這個喜歡的cPanel)

替代授予登錄到Windows事件日誌:

  1. 登錄到數據庫或文件
  2. 在分佈式架構中,或企業級系統,發送事件日誌條目到的數據傳送到一個聚合系統隊列系統。
+0

是的。我同意你的意見。我將測試數據記錄到文本文件中。這僅用於測試場景。稍後我會將其移至DB。感謝您的反饋。 – Sampath

1

您需要管理員權限才能創建事件源,因爲名稱必須是唯一的,並檢查是否需要檢查包括安全性在內的所有註冊表項。我懷疑你想給你的IIS帳戶本地管理員,但。 我們這樣做的方式是(對於桌面應用程序),我們的安裝程序是否創建事件源(作爲管理員),然後我們的應用程序只是讀取它的寫入。

+0

你知道如何做到這一點的asp.net mvc網絡應用程序? – Sampath

+0

不,我不知道。取決於你如何部署。我們有一個龐大的自定義安裝程序(做各種其他的事情,其中​​一些需要管理員權限)。你可以這樣做(爲操作系統男孩寫一個小應用程序)作爲手動部署步驟。 –

+0

+1爲您提供支持。 – Sampath