【问题标题】:Elmah.MVC returns 403 in Local EnvironmentElmah.MVC 在本地环境中返回 403
【发布时间】:2019-01-23 10:15:36
【问题描述】:

我已将 Elmah.MVC 安装到我正在处理的项目中并尝试浏览到 /elmah,但经常遇到此错误:

您正试图从远程机器访问 ELMAH,而它 当前配置为不允许远程访问。您可以启用远程 通过将以下部分添加到此网站来访问 站点配置文件:

<configuration>
         <configSections>
             …
             <sectionGroup name="elmah">
                 <section name="security" type="Elmah.SecuritySectionHandler, Elmah" />
             </sectionGroup>
             …
         </configSections>
         <elmah>
            <security allowRemoteAccess="yes" />
         </elmah>
         …
     </configuration>

问题是,我在本地机器上以调试模式运行应用程序,而不是远程运行。

我的网络配置如下:

<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>
  ......
  <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.IgnoreDefaultRoute" value="false" />
    <add key="elmah.mvc.allowedRoles" value="*" />
    <add key="elmah.mvc.allowedUsers" value="*" />
    <add key="elmah.mvc.route" value="elmah" />
    <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />
  </appSettings>
  ......
  <httpModules>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" />
    <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" />
    <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" />
  </httpModules>
  ......
  <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>
    <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah" />
    <security allowRemoteAccess="false" />
  </elmah>
</configuration>

我之前在其他项目中使用过 Elmah,没有遇到过这个问题。我正在使用 Visual Studio 2017、MVC5 和 .NET Framework 4.5.2

有人有什么想法吗?

【问题讨论】:

  • 你能发布你的整个 web.config 吗?

标签: asp.net-mvc elmah.mvc


【解决方案1】:

同样的问题。我明确地在本地访问,我尝试了“localhost”和“127.0.0.1”。 但我可以让它与另一个较小的 MVC 项目一起工作,至少是远程的。

比较两者,我注意到 elmah.corelibrary 的 版本 存在差异,现在我相信最新版本 1.2.2 会导致问题。

所以,我替换了 2 个 dll,现在有了

  • Elmah.dll v1.2 (v1.2.13605.2128)(而不是 1.2.2 或 1.2.14706.0?)
  • Elmah.Mvc.dll v2.1.2

并更新了 package.config:

<package id="elmah.corelibrary" version="1.2" targetFramework="net461" />
<package id="Elmah.Mvc" version="2.1.2" targetFramework="net461" />

在 Root web.config 中,我有以下与 elmah 相关的行

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

在 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.IgnoreDefaultRoute" value="false" />
  <add key="elmah.mvc.allowedRoles" value="*" />
  <add key="elmah.mvc.allowedUsers" value="*" />
  <add key="elmah.mvc.route" value="elmah" />
  <add key="elmah.mvc.UserAuthCaseSensitive" value="true" />

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

正在配置中

<elmah>
   <security allowRemoteAccess="true" />
</elmah>

我费了很大的劲才让这一切顺利进行。最后一个属性当然可以设置为 false (它仍然在本地工作) 我希望它对你有用!

【讨论】:

  • 请注意,nuget 包资源管理器同时提到了 elmah v.1.2.2 和 elmah.corelibrary v.1.2.2,我有点困惑。
猜你喜欢
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2013-04-24
  • 2020-12-13
  • 1970-01-01
相关资源
最近更新 更多