【问题标题】:Configuration issue Web.Config / Custom Providers配置问题 Web.Config / Custom Providers
【发布时间】:2009-06-15 21:31:01
【问题描述】:

好的,这似乎是一个非常简单的问题,但我似乎无法解决它。我几乎 99% 确定这是 Visual Studio 本身的问题,但我想快速检查一下。

我正在为 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>

每当我尝试编译时,我都会收到此错误:

错误 2 无法加载类型“SQLApplicationExceptionProvider”。
路径\web.config 90

我考虑使用类型的全名(即使它不应该是必需的),但由于这是一个网站(而不是 Web 应用程序),我不确定该类型是什么。

【问题讨论】:

    标签: asp.net .net vb.net configuration


    【解决方案1】:

    我知道这听起来可能很奇怪,但我之前遇到过这个问题,为了解决它,我必须从我的 web.config 文件中删除(或注释掉)“问题”部分(在你的情况下是 healthmonitoring 部分) ,构建网站,添加“问题”部分,然后重新构建。

    奇怪地为我工作......

    【讨论】:

    • 你是正确的。我实际上做了这件事,成功了一段时间,但它最终停止了工作。谢谢。
    • 在这种情况下,我会倾向于@John Saunders 提到的内容并调查 SQLApplicationExceptionProvider 类的命名空间;也许它已经改变了(?)......
    【解决方案2】:

    我建议您不要使用网站“项目”,除了简单的网站。这可能是您的类位于您没想到的命名空间中的问题。此类问题经常出现在网站“项目”中。

    【讨论】:

    • 我完全同意,尽管我对 VS 喜欢放入网站项目中添加的“设计器”文件有点恼火。我不确定标准网站在编译时是否会创建一个可预测的命名空间。
    • 在 Web 应用程序项目中,可能有多少 .designer.cs 文件并不重要,因为它们都被编译成应用程序的单个程序集。我对网站“项目”的理解(可能有缺陷)是它们不使用名称空间。对于网站开发人员来说,命名空间显然太复杂了,在微软那些制造这种混乱的人的想法中。
    • 但是,请使用对象浏览器查看您是否可以找到您的类,并了解它在哪个命名空间中。对象浏览器有一个搜索功能,您可能会觉得有帮助。
    【解决方案3】:

    您是否已将配置文件配置为接受您的处理程序?

    I.E.在web.config 文件顶部的configSections 集合中添加了section 条目。

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

    【讨论】:

    • 健康监控是 .Net 的默认功能,此部分已通过基本 web.config 添加。
    • 干杯,我没有意识到这一点。但是,如果您要为其创建自定义提供程序,您是否不必在某个地方注册它?
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2016-07-29
    • 1970-01-01
    • 2011-10-17
    • 2016-08-11
    相关资源
    最近更新 更多