VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”
Posted
技术标签:
【中文标题】VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”【英文标题】:VB.NET/ASP.NET 4.0 custom configuration section: "An error occurred creating the configuration section handler" 【发布时间】:2012-05-11 22:51:10 【问题描述】:我正在创建一个自定义配置部分,它允许我管理我想从我的 VB.NET/ASP.NET 应用程序中忽略的 ELMAH 异常。这是我的代码。如果有人愿意接受诊断问题的挑战,我可以很容易地粘贴到空白代码文件中。
Imports System.Configuration
Namespace ElmahExceptionHandling
Public Class IgnoredExceptionSection : Inherits ConfigurationSection
<ConfigurationProperty("IgnoredExceptions")>
ReadOnly Property IgnoredExceptions As IgnoredExceptions
Get
Return TryCast(Me("IgnoredExceptions"), IgnoredExceptions)
End Get
End Property
Shared Function GetConfig() As IgnoredExceptionSection
Return TryCast(System.Configuration.ConfigurationManager.GetSection("IgnoredExceptionSection"), IgnoredExceptionSection)
End Function
End Class
<ConfigurationCollection(GetType(IgnoredException))>
Public Class IgnoredExceptions : Inherits ConfigurationElementCollection
Protected Overloads Overrides Function CreateNewElement() As System.Configuration.ConfigurationElement
Return New IgnoredException
End Function
Protected Overrides Function GetElementKey(element As System.Configuration.ConfigurationElement) As Object
Return TryCast(element, IgnoredException).Message
End Function
End Class
Public Class IgnoredException : Inherits ConfigurationElement
<ConfigurationProperty("Message")>
ReadOnly Property Message As String
Get
Return Me("Message")
End Get
End Property
End Class
End Namespace
这是配置:
<configSections>
<section name="IgnoredExceptionSection" type="ElmahExceptionHandling.IgnoredExceptionSection, WEB" />
</configSections>
<IgnoredExceptionSection>
<IgnoredExceptions>
<add Message="test exception" />
</IgnoredExceptions>
</IgnoredExceptionSection>
当我执行这段代码时:
Dim section As ElmahExceptionHandling.IgnoredExceptionSection = ConfigurationManager.GetSection("IgnoredExceptionSection")
我收到错误An error occurred creating the configuration section handler for IgnoredExceptionSection: Could not load file or assembly 'WEB' or one of its dependencies.
。
令我惊讶的是,在我使用 Web 实用程序从 VB.NET 转换代码后,这一切都在我的 C# 控制台测试应用程序中运行良好。但是,当我将 Web 应用程序中的 VB 代码粘贴到我的 VB.NET 控制台测试应用程序中时,它在那里也不起作用,因此它似乎是一个 C#/VB 问题。我在这里做错了什么?
【问题讨论】:
您需要使用Fusion log viewer. 进行调试,只需确保以管理员身份运行它,打开日志,然后在尝试调试之前重新启动。您将看到 CLR 在哪里寻找程序集,以及什么版本,并从那里确定为什么找不到它(如果您甚至安装了它)。 我想这个问题被否决了,因为人们不喜欢以这种方式取消例外的想法。投反对票的人没有给出任何投反对票的理由(对于 Stack Exchange 来说,这是一种低效的方法)。 【参考方案1】:在您的配置文件中,类型声明的末尾有一个不需要的条目。尝试更改此行:
<configSections>
<section name="IgnoredExceptionSection" type="ElmahExceptionHandling.IgnoredExceptionSection, WEB" />
</configSections>
到这里
<configSections>
<section name="IgnoredExceptionSection" type="ElmahExceptionHandling.IgnoredExceptionSection" />
</configSections>
【讨论】:
我之前尝试过,但仍然收到错误消息。我的配置行如下所示:<section name="IgnoredExceptionSection" type="ElmahExceptionHandling.IgnoredExceptionSection" />
您是否在测试应用程序中尝试过您的解决方案?我设置了代码,以便轻松粘贴到简单的控制台应用程序中。它适用于我的 C# 应用程序,但不适用于我的 VB.NET 应用程序。
@oscilatingcretin:我尝试过 c# 和 vb 网站,但你的代码都失败了。然后我跟着迈克评论,现在两者都很完美。不知道你的问题是什么。无论您是否早先尝试过该解决方案都没有关系。您的问题部分仍然包含不正确的信息。尝试此解决方案并发布您的错误消息。这将帮助我们分析并查看还有什么问题。
顺便说一句,如果您希望在控制台应用程序中使用此自定义配置,那么您必须在配置中添加您的应用程序名称 (以上是关于VB.NET/ASP.NET 4.0 自定义配置部分:“创建配置部分处理程序时出错”的主要内容,如果未能解决你的问题,请参考以下文章