1

嗨,我正在尝试确保 elmah 只能从名为 admin 的 mvc 区域内访问:/admin/area

我已将以下内容添加到路由配置的顶部,以便它们首先出现:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("admin/elmah.axd/{*pathInfo}");

并在 system.web 和 system.webServer 下的 web.config 中有以下内容:

  <handlers>
     ...
      <add verb="POST,GET,HEAD" path="/admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
    </handlers>

然而我不断得到:

The controller for path '/admin/elmah.axd' could not be found.

似乎路线没有被忽略?

4

1 回答 1

1

Elmah.MVC nuget可能会有所帮助。

在版本 2.0.0(例如1.3.2)之前,它添加了一个名为“admin”的区域,并在其中添加了一个名为“elmah”的控制器。因此,您可以从 web.config 中删除带有“elmah.axd”的处理程序,并且仍然可以在“/admin/elmah”上访问 elmah。然后,您可以通过将 autorizeattribute 添加到 elmah 控制器来保护这条路线。

在版本 > 2.0.0 中,它已更改为不添加名为 admin 的区域。相反,您可以在“/elmah”上访问 elmah。版本 > 2.0.0 还会自动从您的 web.config 中删除 elmah.axd。

于 2012-06-26T19:46:22.807 回答