7

これは、パフォーマンス カウンターを作成するコードです。

var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total");

ここで例外が発生します。

int cnt = (int)Math.Round(ftpPerfCounter.NextValue());

Exceptionメッセージは次のとおりです。

「エラー メッセージ: 指定されたカテゴリのカウンター レイアウトが無効です。タイプのカウンター: AverageCount64、AverageTimer32、CounterMultiTimer、CounterMultiTimerInverse、CounterMultiTimer100Ns、CounterMultiTimer100NsInverse、RawFraction、または SampleFraction の直後に、ベース カウンター タイプのいずれかが続く必要があります: AverageBase 、CounterMultiBase、RawBase、または SampleBase."

エラーメッセージはかなり不可解です。将来、例外を回避するために何ができるかわかりません。

詳細

これは、Windows Server 2008 R2 64 ビット OS で発生します。FTP サーバーは IIS です。

4

3 に答える 3

2

少なくとも IIS 7.5 を搭載した Windows Server 2008 R2 では、パフォーマンス カウンター カテゴリは「FTP サービス」ではなく「Microsoft FTP サービス」と呼ばれます。おそらく、OS/IIS のバージョンによって異なるかもしれませんが、簡単に確認できます。

ターゲット サーバー/マシンで:

  1. 「パフォーマンスモニター」を実行します
  2. 左側のナビゲーション ペインで [Performance Monitor] をクリックします。
  3. プラス アイコンをクリックして、パフォーマンス カウンターを追加します。
  4. 使用可能なカウンターのリストを下にスクロールします。FTP または Microsoft FTP を探して、存在するかどうかを確認します... Microsoft FTP サービスがインストールされていない場合、パフォーマンス カウンターは表示されません。
  5. 見つかったらそれを選択すると、クエリを実行できる特定のカウンター インスタンスのリストが表示されます。それらのインスタンスの 1 つは、関心のある「_Total」です。

もちろん、これは、パフォーマンス カウンターがコードとは無関係に機能することも証明しています。それは知っておくと良いことです!

C#/.NETでパフォーマンス カウンターを使用する方法の具体的なベスト プラクティスについては、この stackoverflow の投稿 を参照してください

于 2012-08-10T18:59:19.037 に答える
1

私のPCにはIISがインストールされていませんが、インストールされている場合は、次のことを試してください。

  1. サーバー エクスプローラーからドラッグ アンド ドロップして、Visual Studio の WMI 用コード ジェネレーターを使用してみてください。生成されたコードを検査し、コードとの違いがあるかどうかを確認します。
  2. リフレクターを使用して例外がスローされた場所を確認し、BCL 内にカスタム ブレークポイントを設定して再現します。次に、コール スタックの内容を分析し、疑わしいコード パスや予期しない状態を探します。
于 2012-08-02T18:14:15.657 に答える
0

彼らはここで同様の問題を解決したようです。たぶん、ベースカウンターをセットアップする必要がありますか?

于 2012-08-10T11:10:58.393 に答える