Ich bin neu die .NET und MVC3 und ich bin gerade mitten in der Umwandlung einer langjährigen klassischen ASP-Website in eine MVC3-Anwendungsseite.MVC3 <Authentifizierung> und <Autorisierung> in einem <location> Attribut
Die gleiche Website hat vier Bereiche, in denen ich eindeutige Anmeldeseiten und diskrete Ebenen von Zugriff und Sicherheit benötigen würde. Das bedeutet, ich will nicht den Standardcode in meiner web.config-Datei verwenden:
<authentication mode="Forms">
<forms loginUrl="~/Account/Logon" timeout="2880" />
</authentication>
Stattdessen ich möchte in der Lage sein, Bereiche einzurichten innerhalb meiner Anwendung und verwenden Sie dann die <location>
Attribut festlegen up Authentifizierung und Autorisierung Regeln für jeden. So zum Beispiel:
<location path="AreaName">
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/AreaName/Login" timeout="15" />
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
Wenn ich entfernen Sie diese drei Zeilen:
<authentication mode="Forms">
<forms loginUrl="~/AreaName/Login" timeout="15" />
</authentication>
Dann, wenn ich versuche, auf in dem Pfad eine der Ansichten für den Zugriff auf „areaname“ Ich werde zuerst zurück zu ~/umgeleitet Konto/Anmelden Wenn ich diese drei Zeilen zurück in setzen, bekomme ich folgende Fehlermeldung:
Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
ich gesucht habe gegen diesen Fehler und keiner der Vorschläge gemacht scheint anzuwenden. Ich habe eine Antwort gefunden, wo die Logik auf den Controller statt in der Web-Konfiguration gesetzt werden sollte, aber diese Methoden bedeuten immer noch, dass Sie den Standard <authentication>
für die gesamte Website verwenden werden.
Ich verstehe nicht, warum ich keine <authentication>
Eigenschaft innerhalb einer <location>
haben kann. Jede Hilfe dazu würde sehr geschätzt werden.
Ich entschuldige mich, wenn ich irgendeine dieser Frage falsch formuliert habe.
Scheint dies, weil in der Datei Machine.config für das ASP.NET-Framework die Einstellung von 'allowDefinition =" MachineToApplication "für den Abschnitt Authentifizierung festgelegt ist. Ich denke also, meine Frage wird, gibt es eine Möglichkeit, diese Einstellung in der machine.config zu übersteuern und es so einzustellen, 'allowDefinition =" Everywhere "' in meiner web.config-Datei für Anwendungen zu sagen? – Peter