国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

如何用在ASP.NET中寫入事件日志

2024-07-10 12:54:57
字體:
來源:轉載
供稿:網友
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 文包含有關編輯注冊表的信息。編輯注冊表之前,務必先了解在發生問題時如何還原注冊表。有關如何還原注冊表的信息,請查看 regedit.exe 中的“還原注冊表”幫助主題,或 regedt32.exe 中的“還原注冊表項”幫助主題。
      現象

      當你使用asp.net 向事件日志中寫入一個新的“事件來源”時,可能會得到如下錯誤消息: system.security.securityexception: 不允許所請求的注冊表訪問權

      原因

      運行asp.net進程的默認悵戶是aspnet(在iis6.0下面是networkservice),而此用戶并沒有權限來創建“事件來源”。

      解決辦法

      注意:(編輯注冊表會導致系統崩潰之類的微軟嚇你的話就不多說)。如果你需要解決此問題,在你運行此asp.net程序之前,則必須要由具有管理員權限的用戶來創建一個“事件來源”。下面有幾個方法用來創建 “事件來源”。

      第一個方法

      使用下列步驟在注冊表編輯中在”應用程序日志”下面創建一個“事件來源”

       1. 點擊“開始”,再點擊“運行”。

       2. 在“打開”框中輸入“regedit”。

       3. 找到下列子鍵:

    hkey_local_machine/system/currentcontrolset/services/eventlog/application

       4. 右擊“application”點擊“新建”再點“項”

       5. 將此新建項重命名為“test”

       6. 關閉注冊表編輯器



      第二個方法

      在system.diagnostics命名空間中有一個eventloginstaller類。它能夠創建和配置你的應用程序在運時要讀寫的事件日志。通過下列步驟,我們能夠使用eventloginstaller類來創建一個“事件業源”

      1. 用vb.net或c#來創建一個名為eventlogsourceinstaller的“類庫”。

      2. 在項目中添加對system.configuration.install.dll,的引用。

      3. 將自動產生的class.vb/class.cs更命名為myeventloginstaller.vb/myeventloginstaller.cs。

      4. 在myeventloginstaller.vb 或 myeventloginstaller.cs中的內容替換為以下代碼:

    visual basic .net sample
    imports system.diagnostics
    imports system.configuration.install
    imports system.componentmodel

    <runinstaller(true)> _
    public class myeventloginstaller
    inherits installer
    private myeventloginstaller as eventloginstaller

    public sub new()
    ' create an instance of 'eventloginstaller'.
    myeventloginstaller = new eventloginstaller()
    ' set the 'source' of the event log, to be created.
    myeventloginstaller.source = "test"
    ' set the 'log' that the source is created in.
    myeventloginstaller.log = "application"
    ' add myeventloginstaller to 'installercollection'.
    installers.add(myeventloginstaller)
    end sub
    end class

    visual c# .net sample
    using system;
    using system.diagnostics;
    using system.componentmodel;
    using system.configuration.install;


    namespace eventlogsourceinstaller
    {
    [runinstaller(true)]
    public class myeventloginstaller : installer
    {
    private eventloginstaller myeventloginstaller;

    public myeventloginstaller()
    {
    //create instance of eventloginstaller
    myeventloginstaller = new eventloginstaller();

    // set the source of event log, to be created.
    myeventloginstaller.source = "test";

    // set the log that source is created in
    myeventloginstaller.log = "application";

    // add myeventloginstaller to the installers collection.
    installers.add(myeventloginstaller);
    }
    }
    }

      5. 生成此項目,得到eventlogsourceinstaller.dll。

      6. 打開visual studio .net 命令提示,轉到eventlogsourceinstaller.dll所在目錄。

      7. 運行此命令來創建“事件來源”:installutil eventlogsourceinstaller.dll

      更詳盡的信息

      我們通過一個創建一個web application來重現以上錯誤以及解決此問題。

      1. 使用vb.net或c#建立一個asp.net web application。

      2. 在webform1.aspx中的代碼替換為以下代碼:

    visual basic .net sample

    <%@ page language="vb" autoeventwireup="true" %>
    <%@ import namespace="system.diagnostics" %>
    <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
    <html>
    <script language="vb" runat="server">
    sub writeevent_click(src as object, e as eventargs)
    dim ev as new eventlog("application")
    ' event's source name
    ev.source = "test"

    eventlog.createeventsource(ev.source, "application")

    try
    ev.writeentry(textbox1.text)
    catch b as exception
    response.write ("writeentry " & b.message & "<br>")
    end try
    ev = nothing
    end sub
    </script>

    <body>
    <form id="form1" runat="server">
    event message:
    <asp:textbox id="textbox1" runat="server" width="233px"></asp:textbox>
    <asp:button id="button1" runat="server" name="button1" text="write to event log"></asp:button>
    </form>
    </body>
    </html>

    visual c# .net sample
    <%@ page language="c#" autoeventwireup="true" %>
    <%@ import namespace="system.diagnostics" %>
    <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
    <html>
    <script language="c#" runat="server">
    void writeevent_click(object src, eventargs e)
    {
    eventlog ev = new eventlog("application");
    // event's source name
    ev.source = "test";

    eventlog.createeventsource(ev.source, "application");

    try
    {
    ev.writeentry(textbox1.text);
    }
    catch (exception b)
    {
    response.write("writeentry " + b.message + "<br>");
    }
    ev = null;
    }
    </script>

    <body>
    <form id="form1" runat="server">
    event message:
    <asp:textbox id="textbox1" runat="server" width="233px"></asp:textbox>
    <asp:button id="button1" runat="server" name="button1" text="write to event log"></asp:button>
    </form>
    </body>
    </html>

      3. 按f5啟動此項目。

      4. 在textbox輸入一些字符,然后點擊write to event log。

      5. 在上面“現象”部分中提到的錯誤消息會出現。

      6. 要解決此問題,在webform1.aspx將下面這行代碼注釋

    eventlog.createeventsource(ev.source, "application");

      7. 重新啟動此項目。

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 青神县| 抚远县| 都昌县| 柘城县| 太保市| 嘉荫县| 繁峙县| 合山市| 长乐市| 贵港市| 化州市| 广宗县| 肇东市| 石城县| 芦溪县| 祥云县| 汝州市| 方山县| 株洲市| 河东区| 大余县| 庄河市| 临漳县| 隆化县| 公主岭市| 武穴市| 周宁县| 巧家县| 治多县| 鹿邑县| 冕宁县| 平定县| 五华县| 台州市| 吴旗县| 佛坪县| 双牌县| 彭阳县| 和硕县| 贺兰县| 安义县|