Antwort

2

Dies wegen des Skripts Karten für ASP.NET. Nur bestimmte Erweiterungen werden in ASP.NET zugeordnet. Der Rest wird direkt von IIS behandelt. Dies ist aus Leistungsgründen vorgesehen.

Es gibt zwei Möglichkeiten, dies zu umgehen.

  1. Ihre Autorisierungsregeln in den web.config-Dateien in NTFS-Datei ACLs Duplizieren (dh, Berechtigungen für Ordner und Dateien direkt). Stellen Sie sicher, dass das Authentifizierungsschema des Benutzers mit den Konten und Gruppen übereinstimmt, die für die Zugriffskontrolle verwendet werden. Mit anderen Worten, wenn Sie SQL verwenden, um Benutzernamen-Token zu speichern, funktioniert dies nicht, da diese Token nicht notwendigerweise zurückverfolgt werden Domänenbenutzer und Gruppen/Rollen.

  2. Erstellen Sie eine IHttpHandler, um Ihre Nicht-ASP.NET-Dateien bereitzustellen. Rufen Sie von der ProcessRequest-Methode die Server.MapPath(url)-Methode für die eingehende URL auf, und streamen Sie die Datei anschließend unter Verwendung von Response.WriteFile(filename) aus. Wahrscheinlich müssen Sie zuerst die ContentType-Eigenschaft festlegen. Und, (hier sind die schlechten Nachrichten), müssen Sie immer noch eine deklarative oder imperative Zugriffsprüfung durchführen - nur die Einträge in den web.config-Dateien funktionieren möglicherweise nicht. Weitere Informationen zum Schreiben eines eigenen Handlers finden Sie unter Custom ASP.NET Processing with HTTP. Es ist wahrscheinlich eine gute Idee, separate Handler für jeden Inhaltstyp zu erstellen. Sobald Sie eine geschrieben haben, werden Sie sehen, wie einfach sie zu machen sind.

Sie könnten versuchen, (haben dies selbst nicht versucht) <Httphandlers> Elemente web.config-Dateien hinzufügen, wo Sie > Elemente zusätzliche < Berechtigung haben - verwenden die < > Element entfernen die entfernen geerbt HttpHandler und fügen Sie einen anderen auf der Unterordner-Ebene (vielleicht zurück zu der gleichen Klasse?). Ich bin mir nicht sicher, ob das funktioniert, aber es ist einen Versuch wert.

Schließlich, wenn Sie wirklich nicht gehen und all diese Arbeit tun möchten, können Sie einfach weitere Erweiterungszuordnungen in IIS hinzufügen. Sehen Sie sich zum Beispiel How to: Register HTTP Handlers an, Sie können der aspnet_isapi.dll ein Mapping für .jpg-Dateien hinzufügen (werfen Sie einen Blick auf die vorhandenen Mappings für .aspx und so weiter). Sie brauchen nicht ein Httphandler Element zu Ihrer web.config hinzufügen, weil die Maschine Ebene web.config bereits diesen Eintrag enthält:

<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="true"/> 

Bitte beachten Sie, dass diese haben sehr ernsthafte Performance-Probleme auf Ihrer Website.

+0

Ich werde das Kapitel über HttpHandlers erneut lesen und versuchen Sie es dann ausprobieren. Ich schätze deine Hilfe sehr – SourceC