找不到元素'elmah'的模式信息。

11

我已经阅读了这里所有已发布的答案,但似乎没有一个能解决我的问题。 即使我收到了这些警告,Elmah仍然可以正常工作。当我在Visual Studio 2012中启动调试(f5)时,我也会收到这些错误。但是在构建过程中一切都很好。

Web.config文件中的配置部分很简单,所以我真的不知道该如何解决它:

<configuration>
  <configSections>
    <sectionGroup name="elmah">
      <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
      <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
      <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
      <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
  </configSections>

  <elmah>
    <security allowRemoteAccess="1" />
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="EvaConnection" />
    <!--<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/App_Data/ErrorLogs" />-->
    <!-- ELMAH class ErrorMailModule.cs has been modified to read config from AppSettings -->
    <errorMail from="dummy@dummy.com" to="dummy@dummy.com" subject="dummy" priority="High" async="true" smtpPort="25" smtpServer="dummy" useSsl="false" userName="dummy@dummy.com" password="dummy" noYsod="false" />
  </elmah>

1
未来参考,GitHub 上有一个 ELMAH 模式可用:https://github.com/elmahio/Elmah-Schema。您可以在此处阅读更多信息并查看如何使用它的示例:http://blog.elmah.io/the-elmah-schema/。 - ThomasArdal
为了让Intellisense识别模式,至少在Visual Studio 2015中,模式根元素必须添加默认命名空间属性,引用目标命名空间:<xs:schema xmlns:tns="http://Elmah.Configuration" elementFormDefault="qualified" attributeFormDefault="unqualified" targetNamespace="http://Elmah.Configuration" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://Elmah.Configuration"> - Suncat2000
2个回答

10

我认为这个错误与你选择SqlErrorLog作为错误日志类型有关。你是否在你的EvaConnection连接字符串配置的数据库中运行了Elmah SQL Server DB Script?如果没有,你需要这样做,以便创建正确的表和存储过程供Elmah在写入错误到数据库时使用。

如果你使用的SQL Server版本高于2005,请参阅ErrorLog Implementation - Enterprise-Level Relational Databases wiki页面上的说明,关于ntext字段类型的说明。

更新:

在更加关注问题后,发现了一个相关的帖子,位于ELMAH Google Group - Could not find schema information。这是Visual Studio报告有关ELMAH配置部分的问题,因为它没有支持的.xsd文件。有一个可用的文件可用于按照Issue 239: Intellisense for web.config and external config files中的说明禁止在Visual Studio中显示此错误/警告消息。


嗨Cook,感谢回复。当然,SQL表已经设置好了,一切都正常工作。Elmah正在记录并按预期发送电子邮件。 我认为这只是与web.config有关的问题,但我真的不知道如何解决它。我只在调试期间收到消息,在构建时一切正常。 - Manight
1
是否有一种类似于 Visual Studio 缓存的东西,用于 Web 配置模式之类的内容?<elmah> 的模式及其属性和元素应该从 <configSections> 中正确读取(实际上确实如此,因为一切都正常工作),但是在启动调试时,我收到了“错误”消息(实际上配置为信息消息,没有真正的错误)。因此,我认为可能是某种 Visual Studio 缓存的问题? - Manight
谢谢,Cook。我在想是否只有我收到了那些消息。 - Manight
1
@Manight 是的,可以从XML编辑器中访问“缓存”。属性窗口中的“模式”属性将打开VS知道的所有模式的网格。您可以在那里添加/删除和启用/禁用模式。如果将Elmah.xsd拖放到项目中并将xmlns="http://Elmah.Configuration"属性添加到您的<elmah>元素中,VS将自动将其模式添加到列表中。 - Suncat2000
我已经这样做了,但警告仍然弹出,而且如果我打开Elmah.xsd文件,它就会奇怪地消失。 - Literate Corvette

3

我之前所有的工作都正常运行,但突然出现了这个错误。

在尝试更复杂的解决方案之前,请尝试以下步骤:

  1. 重新启动Visual Studio
  2. 清理解决方案
  3. 再次构建解决方案

这对我解决了问题。似乎是Visual Studio中缓存了某些东西(或崩溃了)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接