2017-03-29 4 views
0

Ich versuche, eine Django/Angular-Anwendung unter IIS einzurichten.IIS überschreibt und Behandler Konflikt

Wenn ich eine ähnliche Anwendung unter nginx einstelle, übergebe ich alle URLs beginnend mit /api (mein Backend) oder /admin (die Django Admin-Schnittstelle) nach Django. Ich habe auch zwei Standorte festgelegt: / und /static - beide sind Aliase für den Ordner mit allen statischen Ressourcen.

Ich brauche /static auch an Alias, weil Django Admin-Anwendung Referenzen Ressourcen /static/admin/...

Ich kann nicht IIS erhalten die gleiche Art und Weise zu arbeiten. Ich benutze wfastcgi für die Schnittstelle mit Django und eine Rewrite-Regel, um /static zurück zu / zu mappen. Dies ist der relevante Teil meiner Web.config:

<rewrite> 
    <rules> 
     <rule name="Static Perfix" stopProcessing="true" > 
      <match url="^static/(.+)" /> 
      <action type="Rewrite" url="{R:1}" /> 
     </rule> 
    </rules> 
</rewrite> 
<handlers> 
    <add name="Admin" 
     path="/admin" 
     verb="*" 
     modules="FastCgiModule" 
     scriptProcessor="..." 
     resourceType="Unspecified" /> 
</handlers> 

Dies funktioniert nicht. Wenn ich auf /admin zugreife, fängt der Handler es ab und leitet die Anfrage an Django weiter, wie es sollte. Django gibt eine HTML-Seite mit Ressourcen unter /static/admin/base.css zurück (zum Beispiel).

Wenn der Browser eine solche Ressource zu laden versucht, die Rewrite-Regel es fängt, umschreibt es /admin/base.css, und dann der Handler fängt sie und leitet sie an Django, der nicht weiß, was /admin/base.css ist und gibt einen 404.

Ich habe versucht, /static ein virtuelles Verzeichnis, das auf das gleiche physische Verzeichnis wie das Stammverzeichnis verweist. Dies verursachte alle Arten von Konflikten, weil mein Stamm Web.config wurde zweimal gelesen, was zu allen Arten von doppelten Schlüsselverletzungen (für alle Schlüssel, die ich definiert habe, mehr oder weniger).

Ich würde jede Hilfe bei der Beseitigung dieser Situation zu schätzen wissen.

Antwort

0

Am Ende habe ich das Problem vollständig vermieden, indem ich meinen Ordner für statische Ressourcen umstrukturiert und einen aktuellen Unterordner static hinzugefügt habe, der die statischen Admin-Dateien enthält.

Ich kann nicht mehr manage.py collectstatic für Front-End-Bereitstellung verwenden, obwohl ich ein zusätzliches Skript erstellen muss. Naja.