2009-06-15 7 views
1

これは非常に単純な問題のようですが、回避することはできません。私はほぼ99%がVisual Studio自体の問題だと確信していますが、素早いサニティチェックが必要です。設定の問題Web.Config /カスタムプロバイダ

私はAsp.Netでヘルスモニタリング用のカスタムプロバイダを作成しています。私はBufferedWebEventProviderから継承する非常に簡単なプロバイダを作った。コードは私のウェブサイトのApp_Codeディレクトリにあり、次のようになります。

Public Class SQLApplicationExceptionProvider 
Inherits System.Web.Management.BufferedWebEventProvider 
    Public Overrides Sub Initialize(ByVal name As String, ByVal config As System.Collections.Specialized.NameValueCollection) 
     MyBase.Initialize(name, config) 
    End Sub 
    Public Overrides Sub ProcessEvent(ByVal eventRaised As System.Web.Management.WebBaseEvent) 
     MyBase.ProcessEvent(eventRaised) 
    End Sub 
    Public Overrides Sub ProcessEventFlush(ByVal flushInfo As System.Web.Management.WebEventBufferFlushInfo) 
    End Sub 
    Public Overrides Sub Shutdown() 
     Me.Flush() 
    End Sub 
End Class 

そして、web.configは次のとおりです。

<healthMonitoring enabled="true" heartbeatInterval="100" > 
    <providers> 
     <add name="DBSExceptionProvider" type="SQLApplicationExceptionProvider" 
      buffer="true" bufferMode="RegularNotification" /> 
    </providers> 
    <rules> 
     <add name="DBSErrors" eventName="All Errors" provider="DBSExceptionProvider" 
      profile="Critical" /> 
    </rules> 
    <bufferModes> 
     <add name="RegularNotification" maxBufferSize="10" maxFlushSize="5" 
      urgentFlushThreshold="2" regularFlushInterval="Infinite" 
      urgentFlushInterval="00:00:30" /> 
    </bufferModes> 
    <profiles> 
     <add name="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" /> 
     <add name="Critical" minInstances="1" maxLimit="Infinite" minInterval="00:00:00" /> 
    </profiles> 
</healthMonitoring> 

私がコンパイルしようとするたびに、私はこのエラーを取得:

Error 2 Could not load type 'SQLApplicationExceptionProvider'.
Path\web.config 90

(私はタイプの完全な名前を使用して考えられて(それが要求されるべきではないにもかかわらず)が、これはウェブサイトであるため、 Webアプリケーションではない)私はそのタイプがどんなものか確信していません。

答えて

0

シンプルなウェブサイトを除いて、ウェブサイト「プロジェクト」は使用しないことをお勧めします。これはおそらく、あなたのクラスがあなたが期待していなかった名前空間にあるという問題です。このような問題は、ウェブサイトの "プロジェクト"でしばしば発生します。

+0

私はVSがウェブサイトプロジェクトにドロップするのが好きな「デザイナー」ファイルに少し腹が立っていますが、私は完全に同意します。コンパイル時に標準のWebサイトが作成する予測可能な名前空間があるかどうかはわかりませんでした。 – Nathan

+0

Webアプリケーションプロジェクトでは、アプリケーションの単一のアセンブリにすべてコンパイルされるので、いくつの.designer.csファイルが存在するかは関係ありません。ウェブサイト "プロジェクト"の私の理解(おそらく欠陥がある)は、彼らが名前空間を使用していないということです。名前空間は、Webサイト開発者にとって、この混乱を引き起こしたMicrosoftの考えを考えると、複雑すぎるようです。 –

+0

しかし、あなたのクラスを見つけることができるかどうかを調べるためにObject Browserを見て、それがどのような名前空間であるかを学んでください。Object Browserに役立つ検索機能があります。 –

1

これは奇妙に聞こえるかもしれませんが、私は以前にこの問題を抱えていました。私はweb.configファイルから問題のセクションを削除(またはコメントアウト)しなければなりませんでした(あなたのケースではhealthmonitoringセクション)、ウェブサイトを構築し、「問題」セクションを追加して、再度ビルドします。

奇妙なことに私のために...

+0

あなたはスポットにいます。私は実際にこの成功したことをしばらく成功させましたが、ついには仕事をやめました。ありがとう。 – Nathan

+0

その場合、@ John SaundersがSQLApplicationExceptionProviderクラスのネームスペースについて言及し調査しているところに目を向けます。おそらくそれは変更されました(?)... –

0

ハンドラを受け入れるように設定ファイルを設定しましたか?

I.E. ファイルの先頭にあるconfigSectionsコレクションにsectionのエントリを追加しました。

<configSections> 
    <section name="healthMonitoringSection" type="fully qualified assembly path of handler" /> 
</configSections> 
+0

ヘルスモニタリングは.Netのデフォルト機能であり、このセクションはベースweb.configを介して既に追加されています。 – Nathan

+0

歓声、私はそれを認識しませんでした。しかし、カスタムプロバイダーを作成していたら、どこかに登録する必要はありませんか? – zonkflut