2

ich habe das in der web.config meiner ASP.NET MVC-Anwendung eingestellt Anknüpfend:Problem ASP.NET MVC-app immer umleiten Seite für nicht autorisierte Benutzer auf Fehler

<authentication mode="Windows" /> 
<authorization> 
    <allow roles="MySecurityGroup"/> 
    <deny users="*"/> 
</authorization> 
<customErrors mode="On" defaultRedirect="Error.aspx"> 
    <error statusCode="401" redirect="Help.aspx"/> 
</customErrors> 

Alles funktioniert gut, wenn Sie sind in MySecurityGroup, aber wenn nicht, werden Sie nicht zu Error.aspx oder Help.aspx weitergeleitet. (Beachten Sie, dass Error.aspx in Ansichten lebt \ Shared während Help.aspx in Views \ Home.) Alles, was Sie bekommen, ist der Standardfehler:

Server Error in '/' Application.

Access is denied.

Description: An error occurred while accessing the resources required to serve this request. The server may not be configured for access to the requested URL.

Error message 401.2.: Unauthorized: Logon failed due to server configuration. Verify that you have permission to view this directory or page based on the credentials you supplied and the authentication methods enabled on the Web server. Contact the Web server's administrator for additional assistance.

Was mache ich falsch?

UPDATE: Jetzt ist meine web.config wie folgt aufgebaut, und es funktioniert immer noch nicht:

<system.web> 
    <customErrors mode="On" defaultRedirect="Help.aspx"> 
    </customErrors> 
</system.web> 

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

<location path="Help"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 

Bitte beachte, dass ich einfach gut zu MyApp/Hilfe navigieren kann und bin richtig vom Rest verboten der Website, aber es wird nie automatisch auf die Hilfeseite umgeleitet.

Antwort

1

Sie müssen explizit Zugriff auf andere Gruppen zu Error.aspx und/oder Help.aspx geben, damit sie tatsächlich zu den Seiten gelangen können. So wie Sie es eingerichtet haben, können nur Benutzer von MySecurityGroup auf die Seiten zugreifen. so etwas wie dieses

Sie benötigen:

<location path="Error.aspx"> 
<system.web> 
    <authorization> 
    <allow users="*"/> 
    </authorization> 
</system.web> 
</location> 

und das gleiche für Help.aspx. Alternativ können Sie dies auf Ordnerebene tun.

+0

Macht Sinn, aber aus irgendeinem Grund funktioniert das nicht für mich. Ich habe diesen Code direkt nach dem Ende der ursprünglichen Abschnitt, aber ich bekomme keine anderen Ergebnisse. Der Einfachheit halber mache ich mir nicht einmal Gedanken über Help.aspx, sondern nur über Error.aspx. – gfrizzle

0

Möchten Sie die Fehler und Hilfeseiten, die von mvc oder asp.net behandelt werden? Derzeit behandeln Sie die Seiten wie mvc views, aber Sie haben Weiterleitungs-URLs, die der asp.net-Pipeline zugeordnet sind. Bei einer Rate verschieben Fehler und Hilfe in das Stammverzeichnis der Website und es sollte funktionieren