asp.net-mvc – 从ASP.NET MVC应用程序写入EventLog时的安全异常
我有一个使用一些业务逻辑创建的库,包括写入System.Diagnostics.EventLog实例.该库通常从
Windows服务应用程序调用,但现在我正在尝试从我的ASP.NET MVC应用程序调用这些相同的库函数.
我在我的控制器中尝试这个代码来创建我传递到需要写入日志的方法的EventLog实例. Dim log = New EventLog("Application",My.Computer.Name,"MyMVCApp") 当库方法中的代码尝试写入日志时,会生成以下错误: [SecurityException: Requested registry access is not allowed.] System.ThrowHelper.ThrowSecurityException(ExceptionResource resource) +51 Microsoft.Win32.RegistryKey.OpenSubKey(String name,Boolean writable) +7462217 System.Diagnostics.EventLog.CreateEventSource(EventSourceCreationData sourceData) +366 System.Diagnostics.EventLog.VerifyAndCreateSource(String sourceName,String currentMachineName) +194 System.Diagnostics.EventLog.WriteEntry(String message,EventLogEntryType type,Int32 eventID,Int16 category,Byte[] rawData) +205 System.Diagnostics.EventLog.WriteEntry(String message,EventLogEntryType type) +14 我的网络应用程序作为运行IIS 6的Windows Server 2003上的网络服务用户运行.为了使网络服务用户能够访问注册表,我需要做些什么? 有没有更好的方法来创建在ASP.NET MVC应用程序中使用的EventLog实例?是否有一个已经由框架创建,我只需要参考? 解决方法
从MSDN:“使用网络服务身份运行的应用程序可以使用现有的事件源写入事件日志,但由于注册表许可权不足,它们不能创建新的事件源”.
和… “如果与EventLog实例关联的事件日志的源不存在,则会创建一个新的事件源. 所以看起来你的事件日志源不存在,它试图使用网络服务用户创建一个新的事件日志源(这需要写入注册表,所以不工作). “要使您的ASP.NET应用程序使用不存在的事件源写入事件日志,您有两个选项: >在应用程序安装时创建新的事件源 因此,需要在应用程序之外创建日志(您无法使用此用户进行编程操作),手动进行操作,也可以创建简单的命令行应用程序来简化安装. 有关详细信息: http://msdn.microsoft.com/en-us/library/ms998320.aspx#paght000015_eventlogaccess 就个人而言,我建议您不要更改网络用户权限,而是在Web应用程序之外创建日志源.我的偏好是在一个控制台应用程序(这将需要大约5分钟的写作,你还可以用来准备其他机器).在VS.NET中启动新的控制台应用程序,并添加代码来创建日志源.一个例子: http://www.dotnetspider.com/resources/23593-Create-Event-log-VB-NET.aspx 然后从cmd行运行控制台应用程序,并以适当的权限登录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET Core 2.0 支付宝当面付--扫码支付
- 在预编译asp.net网站 – 是否重要?
- asp.net-mvc-4 – ASP.NET MVC:脚本捆绑何时决定更改捆绑包
- 从asp.net代码后面读表单认证cookie
- asp.net – 是否可以更改web.config而不会终止所有用户会话
- 从Asp:Menu运行每个MenuItem的javascript函数
- asp.net – 来自数据库的实体框架更新模型,不为tt类中新添加
- ASP.NET MVC3 AJAX.BeginForm AjaxOptions OnSuccess OnFai
- asp.net-mvc – 是否可以使用RedirectToAction清除路由值?
- ASP.NET – 如果不包括CSS,如何包含CSS?
- asp.net-web-api – 使用自定义授权测试异步Web
- asp.net-identity – ASP.net身份 – UserManage
- asp.net – 在Selectedindexchanged事件中选择下
- asp.net – 在IIS上运行Python和Django
- asp.net-mvc-4 – 在asp.net mvc应用程序中集成P
- asp.net – Lucene.Net和孵化状态
- asp.net – html页面的ASP服务器统计信息
- asp.net-mvc – MVC ASP.NET或Razor
- 缩小ASP.NET应用程序的Html输出
- asp.net-mvc – ASP.NET MVC 5 Html.HiddenFor呈