ELMAH - MVC 3 - 403 - Forbidden:访问被拒绝

35

我使用NuGet安装了Elmah for MVC,能够成功登录但遇到了数据库错误。

唯一的问题是我无法访问/elmah URL来查看错误日志页面。

这是我的一部分配置,请问是否有任何配置错误?

谢谢

错误信息:

403 - 禁止访问:拒绝访问。
您没有使用提供的凭据查看此目录或页面的权限。

在我的web.config中:

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="elmah.mvc.disableHandler" value="false" />
    <add key="elmah.mvc.disableHandleErrorFilter" value="false" />
    <add key="elmah.mvc.requiresAuthentication" value="true" />
    <add key="elmah.mvc.allowedRoles" value="Administrator" />
    <add key="elmah.mvc.route" value="elmah" />
  </appSettings>

global.asax 文件中:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("elmah.axd");
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    }

你是如何处理身份验证和授权的? - jrummell
3个回答

50

这些内容都来自文档/入门指南。

您不需要以下这行:

routes.IgnoreRoute("elmah.axd");
下一行代码会处理它。
你需要配置的所有内容都在你的web.config文件中,类似于:
<elmah>
  <security allowRemoteAccess="yes" />
  <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="mySqlConnString" />
</elmah>
<location path="elmah.axd">
  <system.web>
    <authorization>
      <allow roles="Administrator" />
      <deny users="*" />
    </authorization>
  </system.web>
</location>

能帮到你就好。


谢谢,我正在使用MVC,你确定我应该使用<location path="elmah.axd">吗?谢谢。 - GibboK
9
很有可能Emlah已经更新了,而我正在使用旧的配置文件。我认为重要的部分是allowRemoteAccess以及确保你已经像jrummell所说的那样通过身份验证。 - Erik Philips
3
对于MVC,您将使用类似<add key="elmah.mvc.route" value="elmah" />的appSettings条目。安装此NuGet包,它将适当地修改您的配置:https://www.nuget.org/packages/Elmah.MVC - nikib3ro
他说Elmah MVC。您展示的设置不是为MVC而设计的,它们是为更早版本的Elmah设计的。然而,允许远程访问字符串是必需的。 - rollsch
我只需要这一行 <security allowRemoteAccess="yes" /> 谢谢。 - Juan
对我也帮了大忙 :) 不过在我的情况下是 <security allowRemoteAccess="1" />,我正在使用 elmah 1.2.13605.0。 - Jhabar

34

以防万一,如果有人遇到和我一样的问题。

这是我的错误代码:

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

问题在于allowremoteAccess中的r是小写,而应该是大写!

正确代码:

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

1
非常感谢,我通过 <security allowRemoteAccess="true" /> 解决了我的问题,谢谢。 - Rod Lima
2
很好的回答!虽然 Elmah.MVC 添加了大部分必要的 web.config 配置,但是这一行却缺失了。 - Ben Cottrell
1
小写字母“r”受害者在这里,感谢您和您的投票。 - Drewman

2
即使我已经将远程访问添加到了我的web.config文件中:
<add key="elmah.mvc.allowedRoles" value="adminrole" />  

<elmah>
      <security allowRemoteAccess="true" />
      <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="DefaultConnection" />
      </elmah>

我需要在服务器上编辑 Elmah.Athz.config 并添加我想要授权访问 elmah 的角色。我需要添加 ^adminrole


天哪,救了我啊,我完全错过了这个文件。就这样了。谢谢。 - Vedran Mandić

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