ASP.NET Web应用程序写EventLog出错的解决方案

解密‘喜乐的ASP.NET’:经典Web Forms技术图谱与工程遗产 ASP.NET Web Forms是微软早期Web开发的核心范式,其Page生命周期、ViewState状态管理与Web.config声明式配置构成独特技术体系。理解这一架构不仅关乎历史认知,更对诊断遗留系统性能瓶颈、迁移升级路径及现代.NET问题根因分析具有关键价值。例如,Blazor Server的首屏延迟、ASP.NET Core中Session丢失等现象,常可溯源至Web Forms时代的IIS管道行为、ViewState膨胀或StateServer机制。本文基于真实ID‘喜乐的ASP.NET’还原 阅读详情

最近在对应一个ASP.NET Web应用程序Bug的时候,为了调查运行环境中具体的Bug于是查阅了一下错误日志。

这个程序的错误日志是直接保存在一个文本文件中的,结果发现就算是出错也不会留下任何痕迹。

一调试,竟然是把错误日志的保存路径给写错了。My God!

 

把路径改了,转念一想下次出错再不保存怎么办?谁知道真正的环境里会出什么状况呢。

于是乎,出错了就直接把错误日志写到服务器的EventLog上吧。

三下五除二改完了就等着好消息呢。

 

可是左等右等还是没有日志留下来,Bug还是照旧。

一查,嘿,不让写EventLog。

 

网上一查,果然已经有前车之鉴。微软官方上也有解决方法。

按照第一个方法做了一下,改了服务器的注册表就好用了。

第二个就没尝试了。

解决问题的文章就摘下来做个经验保留。

 

地址:http://support.microsoft.com/?scid=kb;zh-cn;329291&spid=810&sid=58#appliesto

 

原文:

 

症状 使用 ASP.NET 在事件日志中创建一个新的事件源时,您可能会收到下面的错误信息:System.Security.SecurityException:Requested registry access is not allowed.

 

原因 默认情况下,ASP.NET 工作进程的用户令牌是 ASPNET(或者,对于 Internet 信息服务 [IIS] 6.0 上运行的应用程序是 NetworkService)。由于您的帐户不具有创建事件源的正确用户权限,会出现“症状”部分中的问题。

 

解决方案


警告 :注册表编辑器使用不当可导致严重问题,从而可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。 要解决此问题,在您运行 ASP.NET Web 应用程序之前,拥有管理权限的用户必须创建事件源。要创建事件源,请使用下列方法之一。

第一种方法

在注册表编辑器中,在应用程序 事件日志下创建一个事件源。为此,请执行下列步骤:

  1. 单击“开始”,然后单击“运行”。
  2. 在“打开”文本框中,键入 regedit
  3. 找到以下注册表子项:
    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application
  4. 右键单击“Application”子项,指向“新建”,然后单击“项”。
  5. 键入 TEST 作为该项的名称。
  6. 关闭注册表编辑器。
第二种方法

System.Diagnostics 名称空间中的 EventLogInstaller 类允许您安装和配置一个事件日志,您的应用程序在运行时可以读取或写入该事件日志。您可以使用 EventLogInstaller 创建一个事件源。为此,请执行下列步骤:

  1. 使 用 Microsoft Visual Basic .NET 或 Microsoft Visual C# .NET 创建一个新的名为 EventLogSourceInstaller 的“类库”。默认情况下,将创建“Class1.vb”文件或“Class1.cs”文件。
  2. 在解决方案资源管理器中,右键单击“EventLogSourceInstaller”,然后单击“添加引用”。
  3. 在“添加引用”对话框中,双击“System.Configuration.Install.dll”,然后单击“确定”。
  4. 将 Class1.vb/Class1.cs 重命名为 MyEventLogInstaller.vb/MyEventLogInstaller.cs。
  5. 用以下示例代码替换 MyEventLogInstaller.vb 或 MyEventLogInstaller.cs 中现有的代码:

Visual Basic .NET 示例


 

Visual C# .NET 示例


  6. 在“生成”菜单中,单击“生成解决方案”以生成“EventLogSourceInstaller.dll”。
  7.打开“Visual Studio .NET 命令提示符”。
  8.在该命令提示符下,更改到“EventLogSourceInstaller.dll”所在的文件夹。
  9.运行以下命令以生成 EventSource: InstallUtil EventLogSourceInstaller.dll


重现此问题的步骤

  1. 使用 Visual Basic .NET 或 Visual C# .NET 创建一个新的“ASP.NET Web 应用程序”。默认情况下,将创建“WebForm1.aspx”文件。
  2. 在“WebForm1.aspx”的 HTML 视图中,用以下示例代码替换现有代码:

Visual Basic .NET 示例

Visual C# .NET 示例

    3.  在“调试”菜单上,单击“开始”以在浏览器中查看“WebForm1.aspx”页面。
    4.  在“TextBox”中键入一些文字,然后单击“写入事件日志”。
    5.  本文“症状”部分讨论的错误信息将会出现。
    6.  要解决此问题,请创建一个如“解决方案”部分所讨论的事件源,并在“WebForm1.aspx”中给下列代码添加注释:


    7.  重复步骤 3 和 4。

这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 标准版
  • Microsoft Visual C# .NET 2003 标准版
  • Microsoft ASP.NET 1.0
  • Microsoft Visual .NET 2002 标准版
  • Microsoft Visual C# .NET 2002 标准版
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Services 6.0



ASP.NET Forms身份认证原理与生产级实践指南 Forms身份认证是ASP.NET中基于Cookie的轻量级认证机制,其核心在于通过加密票据(FormsAuthenticationTicket)在无状态HTTP协议上构建可信赖的用户身份上下文。它依赖machineKey进行对称加密与签名验证,利用slidingExpiration实现会话自动续期,并通过HttpContext.User完成认证与授权的解耦。该机制不依赖Session,具备高并发、低开销特性,广泛应用于政企内网、医保平台、教育系统等.NET Framework存量场景。本文深入解析Cook 阅读详情

相关推荐

faster lio 回环 加入GTSAM优化的记录

对Faster lio 加入回环、gtsam优化,在室外建图遇到的问题和过程

Nico_jion的博客 2546

测试网页打不开的软件,网站打不开后检查应用程序日志 事件id4689

事件类型:错误事件来源:ASP.NET 2.0.50727.0事件种类:Web Event事件 ID:1301日期:2009-5-23事件:15:01:14用户:N/A计算机:DATABASE描述:The following exception was thrown by the web event provider 'EventLogProvider' in the app...

weixin_39626089的博客 681

什么是 SAPGUI 里的 Logon Group/Server

这意味着,不同的用户连接可以被分配到不同的应用服务器,以实现均衡的资源利用和降低某一服务器的负载压力。在这种配置下,欧洲的用户登录时选择“EUROPE_GROUP”,系统将自动选择一个位于欧洲的数据中心的服务器进行连接,这样不仅减少了网络延迟,还实现了服务器间的负载均衡。用户在 SAPGUI 中登录时,只需选择相应的 Logon Group(例如“FIN_GROUP”),系统就会自动将他们的连接请求分配到当前负载最小的应用服务器上,这种动态分配大大提升了系统的响应速度和稳定性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1022

w3wp.exe报错

我的一台2003的服务器上,已经打了sp1,安装了framework 2.0和语言包,但是运行一段时间以后就频繁的报错。IIS就不能用了 错误1: 错误应用程序 w3wp.exe,版本 6.0.3790.1830,错误模块 ntdll.dll,版本 5.2.3790.1830,错误地址 0x000327f9。 错...

weixin_34138377的博客 587

C# 编的Windows serice程序. 安装时出现异常!

初学Windows Service 程序的编,按照MSDN上了一个service! 遇到安装服务的错误, 能帮忙看下是什么原因吗? 下面是在命令行下的安装结果: 正在运行事务处理安装。 正在开始安装的“安装”阶段。 查看日志文件的内容以获得 C:\Users\Ramon.Fu\Documents\Visual Studio 2005\Projects \Test_Service\Tes...

weixin_30335353的博客 435

关于入Windows Log Event却没有任何记录的问题

在本机或者服务器上,入Windows Event Log日志代码,执行了没有报错,但是打开Windows Event Log记录面板,却看不到任何记录,很可能是你当前用户没有权限是入东西。此时,我们做一些配置,就可以使当前用户拥有Event Log的权限。 设置:“开始->运行”,输入命令,“regedt32”,找到“System->CurrentControlSet->Serv

写代码的蜗牛 5620

用Task多线程操作C#T4生成代码,抛出System.ObjectDisposedException: 已关闭 Safe handle

抛出的异常: ErrorGeneratingOutput D:\Work\wanghaoli.Kalman.Studio\Kalman.Studio\src\Kalman.Studio\bin\Debug\T4Template\whl实体2.tt(-1,-1) : error : An Exception was thrown while processing the template. The following Exception was thrown: System.ObjectDisposedExc

u011511086的专栏 917

【转】ASP.NET Web应用程序EventLog出错解决方案

最近在对应一个ASP.NET Web应用程序Bug的时候,为了调查运行环境中具体的Bug于是查阅了一下错误日志。 这个程序的错误日志是直接保存在一个文本文件中的,结果发现就算是出错也不会留下任何痕迹。 一调试,竟然是把错误日志的保存路径给错了。My God! 把路径改了,转念一想下次出错再不保存怎么办?谁知道真正的环境里会出什么状况呢。 于是乎,出错了就直接把错误日志到服务器的EventLo...

weixin_33672400的博客 310

asp.net中当服务器出错时显示指定的错误页

  asp.net中当服务器出错时显示指定的错误页面同时把错误信息入系统日志文件的探讨 一,在Web.config中填出错时显示的页面,可以根据不同的statusCode显示不同的出错页面。 二,在Global.asax文件中添加应用出错代码,入系统日志文件 protected void Application_Error(Object sender, EventArgs e) { Exce

~缘份天空~ 689

asp.net中当服务器出错时显示指定的错误页面

http://blog.csdn.net/helloxiaoyu/article/details/2943537   此篇文章描述了当异常再ASP.NET中发生时怎样使用C#.NET代码去拦截和相应异常。ASP.NET在异常处理方面比传统的ASP更优越。在ASP.NET中,允许在应用程序的各个层面中处理异常。ASP.NET的新特性ASP.NET为捕获并处理异常提供了更多的便利。在传统的ASP...

weixin_34125592的博客 169

asp.net中 统一处理错误

转载: asp.net中当服务器出错时显示指定的错误页面同时把错误信息入系统日志文档 一,在web.config中填出错时显示的页面,能够根据不同的statuscode显示不同的出错页面。 <customerrors mode="on"//假如配置为off则出错只返回错误信息,不会跳到自己的指定页面defaultredirect="/error/custome...

weixin_30435261的博客 126

ASP.NET将网页错误信息入系统日志

设计网站的时候,不可能我们的网站不出现一点错误,常见的“页面不存在”“页面运行出错”等错误信息一般网站多少总是存在的,关键是,这些错误出现以后,管理员怎样方便及时的发现它们、尽量减少用户对网站的不好印象。不管是IIS 4还是IIS 5,我们都可以设置网站的“自定义错误信息”,通过这样的设置,一些系统默认的比较不友好的错误信息就可以更换为网站管理员自定义的页面,这对于网站的实用和友好性都大有帮助。但

wangliqiang1014的专栏 1036

.net自定义错误页面

asp.net中当服务器出错时显示指定的错误页面同时把错误信息入系统日志文件的探讨一,在Web.config中填出错时显示的页面,可以根据不同的statusCode显示不同的出错页面。 代码 <customErrorsmode="On"//如果设置为Off则出错只返回错误信息,不会跳到自己的指定页面defaultRedirect="/error/customerrorpage.a...

m0_55208453的博客 69

Win7 installutil安装服务失败

Win7  installutil安装服务失败 正在安装程序集“E:\Applications\MillerApp\MillerApp.Service\bin\Release\MillerApp.Service.exe”。 受影响的参数是:    logtoconsole =    logfile = E:\Applications\MillerApp\MillerApp.Service

lym1108的专栏 2921

【已解决】Windows Service服务 出现System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。

bat文件 内容为 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceTest.exe Net Start Service1 pause 其中%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe为instal

青阳十五的专栏 2万+

使用C#创建Windows服务

本文属于原创,转载请注明出处,谢谢! 一、开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二、创建Windows Service 1、新建一个Windows Service,并将项目名称改为“MyWindowsService”,如下图所示: 2、在解决方案资源管理器...

weixin_30945039的博客 814

.net 服务器 错误日志文件,Asp.Net网站无法入错误日志,测试站点可以,正是站点不行...

我最近在做一个Asp.Net的网站的维护工作,该网站是一个Webform网站,中间调用了PowerShell命令文件做SharePoint部署的一些任务。为了调试方便,我最关键的一步(在.cs文件中)加了将Exception的信息入文本文件。这个“入日志”的功能在我的本地机上运行良好,发布到服务器上的一个测试网站(端口号与正式网站不同),“将错误入日志”也是正常运转,但是发布到服务器上的正式...

weixin_32467421的博客 429

.net 6升级.net7 容器报错is not supported on this platform.

将对应的绘图修改为 Microsoft.Maui.Graphics.Skia支持的方法。安装Nuget包:Microsoft.Maui.Graphics.Skia。

码农的专栏 840

WindowsService问题

正在开始安装的“安装”阶段。查看日志文件的内容以获得 C:\Users\Ramon.Fu\Documents\Visual Studio 2005\Projects\Test_Service\Test_Service\bin\Debug\test_service.exe 程序集的进度。该文件位于 C:\Users\Ramon.Fu\Documents\Visual Studio 2005\Proj...

weixin_33912638的博客 342

后台按键源码

按键源码,支持后台,' 努力创建完善、持续更新的易语言学习例程源码资源站

上一篇: 读后感:谁写的《走出软件作坊》书评这么精彩,请和我联系
下一篇: 【原创】网页中居中层css一则
drink555
博客等级 码龄20年 4粉丝 10原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值