none
稼働中のWEBアプリケーションで稀に「REGDB_E_CLASSNOTREG」エラーが発生してしまう RRS feed

  • 質問

  • お世話になっております。

    稼働中のWEBアプリケーションで画面表示時に毎回ではなく稀に「REGDB_E_CLASSNOTREG」エラーが発生しております。
    この原因とその再現手順も特定できず困っております。

    該当のアプリケーションは NVelocity(テンプレートエンジン)を使用し画面表示の都度、動的にHTMLを生成しております。
    そのNVelocityを使いHTML生成する際に稀に以下のエラーが発生します。

      □発生するエラー内容
      -----------------------------------------------------------------------------------------
      Exception: System.Runtime.InteropServices.COMException
      Message: クラスが登録されていません (HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))
      Source: NVelocity
              :
      -----------------------------------------------------------------------------------------


    エラーの発生は画面を生成する際の NVelocity.VelocityContext というクラスをnewする時点のようで、
    特定の画面で発生するのではなくNVelocity を使用して生成するいくつかの画面で発生している事まで分かっております。
    発生タイミングも不定期で月に5回程度(発生しない月もある)という状況です。

    出力エラーを単純に解釈するとCOMがレジストリに登録されてないという内容のようですが、
    レジストリ不備であれば毎回発生するはずですが本ケースは不定期で発生しております。

    また NVelocity はCOMでなくマネージドDLLであるのに、何故にCOMExceptionが発生するのかも解せないところです。


    【アプリケーションが動作する環境、開発環境】
    ・OS:windows server 2012 Standard
    ・Webアプリケーションサーバ:IIS 8.0
    ・フレームワーク:.NET Framework 4.0
    ・開発言語:C#
    ※IIS上には10程度のWebサイトが動作しており、それぞれのWebサイトに1つのアプリケーション、1つのアプリケーションプールが紐づく構成
    ※IIS上で稼働するWebサイトは全て同様の構造(NVelocityを使っている)で、そのうち負荷の高いいくつかのアップリケーションで同事象が発生している


    原因についてお気付きの点などございましたら、アドバイス頂けますと幸いです。


    2016年7月27日 8:47