C# 指定允许访问错误日志的用户角色

C# 指定允许访问错误日志的用户角色,c#,asp.net-mvc-3,elmah,elmah.mvc,C#,Asp.net Mvc 3,Elmah,Elmah.mvc,由于某些原因,我无法指定应该允许访问错误日志的角色。无论我输入什么角色(我有管理员、超级和测试角色),我的应用程序都会重定向到登录屏幕,这是我未经授权时的预期行为。若我选择使用*允许所有角色,那个么它可以正常工作,但当我需要将其限制为超级角色时,它允许所有角色 我的web.config文件中包含以下内容,允许在登录时访问所有角色: <add key="loginUrl" value="~/Login/" /> <add key="elmah.mvc.disableHandler

由于某些原因,我无法指定应该允许访问错误日志的角色。无论我输入什么角色(我有管理员、超级和测试角色),我的应用程序都会重定向到登录屏幕,这是我未经授权时的预期行为。若我选择使用*允许所有角色,那个么它可以正常工作,但当我需要将其限制为超级角色时,它允许所有角色

我的web.config文件中包含以下内容,允许在登录时访问所有角色:

<add key="loginUrl" value="~/Login/" />
<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="*" />
<add key="elmah.mvc.route" value="elmah" />

但当我将allowedRoles行更改为:

<add key="elmah.mvc.allowedRoles" value="Super" />

它不允许访问任何人,只将他们发送到登录屏幕

任何想法都将不胜感激。这是我第一次尝试使用Elmah,它看起来真的很好,但我还不太熟悉它,所以如果有人需要更多信息来帮助我,请询问,我会提供

编辑

我现在已将Emlah配置为使用SQL Server记录错误,不确定这是否会对任何可能的答案产生影响。

您是否尝试过(从):


...
您是否尝试过(从):


...

在使用Elmah 1.2时,我也遇到了类似的问题,然后我升级到Elmah MVC,它成功了

<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.allowedRoles" value="CKAdmin" />
    <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.webServer>
     <validation validateIntegratedModeConfiguration="false" />
       <modules runAllManagedModulesForAllRequests="true">
         <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>
    <security allowRemoteAccess="false" />
    <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="D:\\ELMAH" />
  </elmah>
</configuration>

在使用Elmah 1.2时,我也遇到了类似的问题,然后我升级到Elmah MVC,它成功了

<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.allowedRoles" value="CKAdmin" />
    <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.webServer>
     <validation validateIntegratedModeConfiguration="false" />
       <modules runAllManagedModulesForAllRequests="true">
         <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>
    <security allowRemoteAccess="false" />
    <errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="D:\\ELMAH" />
  </elmah>
</configuration>

您应该进行以下更改:

<appSettings>
 ......
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="Super" />
</appSettings>

......

您应该进行以下更改:

<appSettings>
 ......
<add key="elmah.mvc.allowedRoles" value="*" />
<add key="elmah.mvc.allowedUsers" value="Super" />
</appSettings>

......

我使用的是Elmah.Mvc nuget包,它似乎没有使用.axd文件。我使用的是Elmah.Mvc nuget包,它似乎没有使用.axd文件。