自定义性能计数器触发安全异常。为啥?
Posted
技术标签:
【中文标题】自定义性能计数器触发安全异常。为啥?【英文标题】:Custom Performance Counters triggers security exception. WHY?自定义性能计数器触发安全异常。为什么? 【发布时间】:2012-12-22 20:00:08 【问题描述】:向我的应用程序添加自定义性能计数器后,我得到了图像中的异常。 我已经添加了提升的权限,我还应该尝试什么?我已经尝试了很长时间来解决这个问题,但没有结果......
谢谢你,请帮助...
<Runtime executionContext="elevated" />
【问题讨论】:
【参考方案1】:使用 Web 角色,即使您将 executionContext 设置为“提升”,角色进程仍然无法获得操作系统的完全执行权限。因此,当您在 Web 角色中使用自定义性能计数器时,操作系统不允许这种情况发生,您会看到异常。
您可以做的是设置自定义性能计数器以在 RoleEntoryPoint 内的 Role OnStart() 方法中以完全权限执行。如果您检查您的 WebRole.cs,您可能会发现 RoleEntryPoint 如下所示来编写您的自定义性能计数器特定代码:
// webrole.cs
public class WebRole : RoleEntryPoint
public override bool OnStart()
// Write here your customer performance counter code
return base.OnStart();
【讨论】:
感谢 AvkashChauhan。我在 Global.Asax 的 Application_start 中创建了 performanceCounters(我没有 WebRole.cs 文件)。我需要什么代码才能让它以完全权限执行 - 或者 OnStart 方法是否比 global.asax 中的 Application_start 更有权限? 任何属于 ASP.NET 的代码都不会以完全权限运行,这就是为什么我建议在 Web 角色进程 (webrole.cs) 中运行计数器特定代码的原因。因此,如果您有 ASP.NET Web 角色,您肯定可以通过将 ASP.NET 应用程序转换为云应用程序来获得 Webrole.cs。另一种选择是为性能计数器特定代码编写一个简单的 C# EXE 并作为 Azure 启动任务运行。 正如你所说,你没有 webrole.cs,我只想知道你如何用 VS2x 打包 ASP.NET 应用程序?你没有使用 Azure SDK 吗?以上是关于自定义性能计数器触发安全异常。为啥?的主要内容,如果未能解决你的问题,请参考以下文章