Asp.net mvc 艾尔玛在MVC,不';除localhost和/elmah can';你找不到sproc?

Asp.net mvc 艾尔玛在MVC,不';除localhost和/elmah can';你找不到sproc?,asp.net-mvc,elmah,elmah.mvc,Asp.net Mvc,Elmah,Elmah.mvc,我不确定我的ELMAH设置发生了什么,它工作正常,然后停止工作。我使用ELMAH core和ELMAH MVC 即使检查我的源代码管理,网络配置中也没有什么真正的改变。我还注意到,在实际的ELMAH错误日志数据库中,记录从11月5日开始停止记录。在源代码管理中找不到与此一致的任何代码更改 我有两个问题,一个是当我转到myapp/elmah时出错: System.Data.SqlClient.SqlException:找不到存储过程“ELMAH_GetErrorsXml” 不知道为什么,因为存储过

我不确定我的ELMAH设置发生了什么,它工作正常,然后停止工作。我使用ELMAH core和ELMAH MVC

即使检查我的源代码管理,网络配置中也没有什么真正的改变。我还注意到,在实际的ELMAH错误日志数据库中,记录从11月5日开始停止记录。在源代码管理中找不到与此一致的任何代码更改

我有两个问题,一个是当我转到
myapp/elmah
时出错:

System.Data.SqlClient.SqlException:找不到存储过程“ELMAH_GetErrorsXml”

不知道为什么,因为存储过程肯定存在于我的数据库中。

并且web.config似乎已正确配置为指向该数据库(将在下面发布完整部分)

第二个问题是,当我将应用程序部署到生产环境时,电子邮件通知(可能还有日志记录本身)不起作用。在本地主机上运行良好。我收到电子邮件,但部署到生产环境时,什么都没有

以下是web.config中我的ELMAH部分:

<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>

<elmah>
   <security allowRemoteAccess="yes"/>
   <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ElmahDb" />
   <errorMail from="no-reply@mysite" to="myself@mysite" subject="Mysite Error" smtpPort="0" async="false" />
</elmah>

<connectionStrings>
   <add name="ElmahDb" connectionString="Data Source=mydb;Initial Catalog=ErrorLog;Persist Security Info=True;User ID=id;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>

<appSettings>
   <add key="elmah.mvc.disableHandler" value="false" />
   <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
   <add key="elmah.mvc.requiresAuthentication" value="false" />
   <add key="elmah.mvc.allowedRoles" value="*" />
   <add key="elmah.mvc.route" value="elmah" />
</appSettings>

<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>
</system.web>

<system.net>
<mailSettings>
  <smtp deliveryMethod="Network">
    <network defaultCredentials="true" host="mySMTP" port="25" />
  </smtp>
</mailSettings>
 </system.net>

<system.webServer>
   <modules>
     <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
     <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
     <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
   </modules>
</system.webServer>

我也尝试过为ELMAH启用/禁用remoteAccess,但也没有任何效果。在本地主机和生产环境中,我在尝试访问
/elmah
时都会遇到相同的错误。电子邮件只在本地主机上发送。那么,我的配置有什么问题,为什么会出现这些错误?

您应该尝试的第一件事是注释掉web.config中的errorLog元素。这使得ELMAH回退到默认错误日志(内存中)。“如果能和它一起工作,那会很有趣的。”汤玛沙达尔:哪一个?或者两者都有??只需删除errorLog元素:)啊,我做了,是的,它工作得很好。这是你的数据库,然后有问题。是否可能与安全相关?您应该尝试的第一件事是注释掉web.config中的errorLog元素。这使得ELMAH回退到默认错误日志(内存中)。“如果能和它一起工作,那会很有趣的。”汤玛沙达尔:哪一个?或者两者都有??只需删除errorLog元素:)啊,我做了,是的,它工作得很好。这是你的数据库,然后有问题。可能与安全有关吗?
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }