【问题标题】:Why can't my web project find my elmah.axd file为什么我的 web 项目找不到我的 elmah.axd 文件
【发布时间】:2013-03-05 19:20:46
【问题描述】:

在我的 web.config 文件中,我拥有运行 elmah 所需的所有对 elmah 的引用。除了这部分代码:

<location path="elmah.axd">
    <system.web>
        <authorization>
            <allow roles="admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

ReSharper 或 Visual Studio 都给了我错误:

未使用位置元素:在 elmah.axd 路径中找不到项目:未找到 Web 项目的路径\elmah.axd

我从 NuGet 安装了 elmah 包并保存了 dll,当我转到站点的根目录并键入 root/elmah.axd 时,我可以访问 elmah 日志;但是,我需要将这些日志的访问权限限制为管理员。

我有两个用户:管理员和用户我只希望具有管理员角色的用户访问 elmah 日志。

我错过了这个拼图的一部分吗?

【问题讨论】:

  • 你在哪里得到错误?
  • 当我打开我的 web.config 文件时,位置标签显示为灰色,当我将鼠标悬停在它上面时出现错误
  • 你是如何安装 Elmah 的?如果您从包管理器控制台运行Install-Package Elmah,您所要做的就是取消注释 web.config 中的那些授权行以使其工作。
  • 我就是这样安装的。我从 NuGet 运行 Install-Package Elmah。它给了我授权行,但是我没有使用默认的 MVC 授权工具。我们必须通过外部资源对我们的应用程序进行授权,所以我需要只允许站点上的管理员访问 elmah 日志
  • 您能否为您的用户调试User.IsInRole("admin") 并确保您确实设置了该角色?

标签: .net asp.net-mvc-3 exception-handling web-config elmah


【解决方案1】:

没有错……只是 reSharper 有点傻。因为它找不到具有该名称的物理文件,所以它认为它不存在并给出您所看到的错误。

您可以使用 ReSharper 禁用注释来忽略它,如下所示:

<!-- ReSharper disable WebConfig.RedundantLocationTag -->
<!-- ReSharper disable WebConfig.WebConfigPathWarning -->
<location path="elmah.axd">
<!-- ReSharper restore WebConfig.WebConfigPathWarning -->
  <system.web>
    <authorization>
      <allow roles="admin" />
      <deny users="*" />
    </authorization>
  </system.web>
</location>
<!-- ReSharper restore WebConfig.RedundantLocationTag -->

但它看起来很丑;-)

【讨论】:

  • 我认为您可以放心地忽略这一点。 axd 应该在运行时存在。 resharper 评论仅禁用警告。它不会阻止该部分的 ui 变暗。我想这是 resharper 中的一个错误,但它不会打扰我。
猜你喜欢
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 2018-02-14
相关资源
最近更新 更多