C# Elmah 1.2不在Windows 2008 IIS7.5集成模式下登录SQL(但在本地工作)

C# Elmah 1.2不在Windows 2008 IIS7.5集成模式下登录SQL(但在本地工作),c#,asp.net,webforms,elmah,C#,Asp.net,Webforms,Elmah,我正在构建一个新的Web Forms aspnet 4.0网站,并使用NuGet安装了Elmah 1.2。我已经在web.config中添加了一行以登录sql server express,并创建了相关的表和3个存储过程。本地(Win 7/IIS 7.5)一切正常(当通过vs2010开发服务器和我的本地IIS运行时)-我可以点击elmah.axd/test,然后返回elmah.axd,果然,我的错误已被记录 然后我将该站点发布到我们的开发服务器(Win2008R2/IIS7.5)。如果我点击el

我正在构建一个新的Web Forms aspnet 4.0网站,并使用NuGet安装了Elmah 1.2。我已经在web.config中添加了一行以登录sql server express,并创建了相关的表和3个存储过程。本地(Win 7/IIS 7.5)一切正常(当通过vs2010开发服务器和我的本地IIS运行时)-我可以点击elmah.axd/test,然后返回elmah.axd,果然,我的错误已被记录

然后我将该站点发布到我们的开发服务器(Win2008R2/IIS7.5)。如果我点击elmah.axd,它会通知我没有错误——然后我转到elmah.axd/test并返回elmah,仍然没有错误。如果我将日志记录切换到内存而不是SQL,那么一切都可以正常工作

我已经为应用程序池用户添加了对站点中所有存储过程的执行权限。我甚至创建了一个名为ElmahConnString的单独连接字符串,以SA身份登录,但仍然不走运。(我试着从sa中删除a以确保它坏了,果然它坏了——所以它肯定是在使用conn字符串)

我的web配置看起来像这样(大部分都放在我的NuGet中!)


...
...
...
您会注意到,这包含了这个问题最广泛的答案,即底部的system.webserver块:'(


我不明白?我缺少什么?

您无法插入数据库,但这不是sql权限问题

  • 也许你的磁盘已满
  • 也许您已经创建了一个没有标识列的表,其中应该有一个标识列

说真的-你等不了整整两分钟才有答案?可能是它正在插入数据库,但你检查得太快了。

c'mon-已经整整两分钟了!还是没有答案?:继续!结果是本地开发人员数据库的脚本编写出了错-Elmah_错误表“序列”列已丢失其标识规范。当我使用SQL Profiler登录时,我看到插入错误的存储过程一直失败-我将存储过程exec复制并粘贴到SQL mgmt studio中,它在序列列中抱怨为空。我只是添加了标识规范,一切又神奇地开始工作(霍瑞!)谢谢“保罗”为我指明了正确的方向!
    <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>

    ...
      <connectionStrings>
        <add name="ConnString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=SiteData;Integrated Security=True" />
      </connectionStrings>
      <elmah>
        <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ConnString" />
        <security allowRemoteAccess="yes" requirePermission="false"/>
      </elmah>
    ...
      <system.web>
        <httpModules>
          <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
          <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
          <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
        </httpModules>
        <httpHandlers>
          <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory,         Elmah" />
        </httpHandlers>
    ...
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules>
          <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
          <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
          <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
          <add name="ErrorTweet" type="Elmah.ErrorTweetModule, Elmah" preCondition="managedHandler" />
        </modules>
        <handlers>
          <add name="Elmah" path="elmah.axd" verb="POST,GET,HEAD" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
        </handlers>
      </system.webServer>