首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PerformanceCounter.NextValue()抛出InvalidOperationException

PerformanceCounter.NextValue()抛出InvalidOperationException
EN

Stack Overflow用户
提问于 2012-05-24 14:47:46
回答 3查看 3.5K关注 0票数 7

这是创建性能计数器的代码:

代码语言:javascript
复制
var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total");

这是例外情况发生的地方:

代码语言:javascript
复制
int cnt = (int)Math.Round(ftpPerfCounter.NextValue());

下面是Exception消息:

错误消息:指定类别的计数器布局无效,类型为: AverageCount64、AverageTimer32、CounterMultiTimer、CounterMultiTimerInverse、CounterMultiTimer100Ns、CounterMultiTimer100NsInverse、RawFraction或SampleFraction的计数器必须紧跟任何基本计数器类型: AverageBase、CounterMultiBase、RawBase或SampleBase。

错误信息非常神秘。我不知道将来怎样才能避免这种例外情况。

详细信息

这种情况发生在Windows 2008 R2 64位操作系统上.FTP服务器是IIS。

EN

回答 3

Stack Overflow用户

发布于 2012-08-10 18:59:19

至少在IIS7.5的Windows 2008 R2上,性能计数器类别称为"Microsoft服务“,而不是"FTP服务”。也许对于不同的OS/IIS版本,它是不同的,但是它很容易检查。

在目标服务器/计算机上:

  1. 运行“性能监视器”
  2. 单击“左侧导航窗格中的性能监视器”
  3. 单击加号图标以添加性能计数器
  4. 向下滚动可用计数器的列表。查找FTP或Microsoft FTP是否存在.注意:如果您没有安装Microsoft服务,您将看不到性能计数器。
  5. 一旦找到,选择它,您将看到一个特定计数器实例的列表,您可以查询。其中一个实例是您感兴趣的“_Total”。

当然,这也证明了性能计数器独立于代码工作。知道这是件好事!

有关如何使用C#/.NET中的性能计数器参见此堆栈溢出帖子的具体最佳实践。

票数 2
EN

Stack Overflow用户

发布于 2012-08-02 18:14:15

我的电脑上没有安装IIS,但如果我安装了IIS,我会尝试这样做:

  1. 从服务器资源管理器中拖放,尝试使用Visual的WMI代码生成器。检查生成的代码,看看是否与您的代码有任何不同。
  2. 使用反射器查看抛出异常的位置,在BCL内设置自定义断点,并进行再现。然后分析调用堆栈内容,查找可疑的代码路径或意外状态。
票数 1
EN

Stack Overflow用户

发布于 2012-08-10 11:10:58

他们似乎解决了一个类似的问题,这里。也许你必须设置一个基地柜台?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10739842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档