2009-03-26 14 views
0

Ich benutze URL Rewriter.NET (die ich sehr gerne, im Vergleich zu URL Rewriting.NET - mehr Versatile scheint es, versteh mich nicht falsch, ich mag URL Rewriting .NET, aber es schien nicht das Bedürfnis zu befriedigen, da ich das Tool kenne. Ich versuche, den Knoten default-documents zu verwenden, um die Standarddokumente für die Site neu zu definieren. Ich habe versucht, es den rewriter Knoten hinzufügen, aber ich erhalte einen web.config FehlerURL Rewriter.NET web.config Knoten Ausgabe

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: The element 'default-documents' is not allowed. 

Source Error: 


Line 187: 
Line 188: <rewriter> 
Line 189:  <default-documents> 
Line 190:   <document>default.aspx</document> 
Line 191:   <document>index.aspx</document> 

Hat jemand dieses Tool in der Vergangenheit verwendet, und nicht jeder wissen, wo diesen Knoten setzen (oder bestimmungsgemäßer Verwendung)?

EDIT:

Ich habe versucht, den Vorschlag weiter unten, aber es schien nicht ganz richtig zu arbeiten. Hier ist, was in meiner zusätzlichen Konfigurationsdatei ist (dies ist der einzige Inhalt in der Konfigurationsdatei)

<rewriter> 
     <rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" /> 
     <default-documents> 
      <document>default.aspx</document> 
      <document>index.aspx</document> 
     </default-documents> 
</rewriter> 
+0

Funktioniert "nicht richtig zu funktionieren" bedeutet "nicht die Standarddokumente verwendet"? Wenn ja, überprüfe meine Bearbeitung unten. – Moose

Antwort

0

Ich glaube, die Lösung für dieses Problem ist die Version von .NET, die ich auf der Website verwende. Ich benutze die Laufzeit 2.0 und die DLL wurde für die Laufzeit 1.1 gebaut. Ich habe auf der Website gesehen, dass die 2.0 Runtime immer noch in RC ist (seit Mitte 2007), und ich werde sie daher nicht auf dieser Produktionswebsite verwenden. Stattdessen habe ich herausgefunden, wie ich mit der URL Rewriting.NET dasselbe Ziel erreichen kann.

Ich habe die folgende Regel:

<add name="Redirect54" virtualUrl="~/content/myvirtualpage.aspx" 
    rewriteUrlParameter="ExcludeFromClientQueryString" 
    destinationUrl="~/content/mydestinationpage.aspx?id=9" 
    redirect="None" 
    ignoreCase="true" /> 

eine HTTP-200-Antwort auf die myvirtualpage.aspx Dies bewirkt, statt einer Rewrite. Das letztendliche Ziel ist es, die mydestinationpage.aspx? Id = 9 haben eine 301 zu myvirtualpage.aspx, die dann die myvirtualpage.aspx mit einer 200 HTTP-Antwort dienen würde. Das ist ein bisschen daneben.

+0

Eigentlich glaube ich, dass ich auch die Version 2.0 benutzt habe und es hat funktioniert, obwohl wir, wie ich schon sagte, mit ein paar nervigen Bugs, die wir irgendwann überwinden konnten. – SirDemon

1

ich verwendet habe, urlrewriter vor, und hatte einige Probleme mit eigentlich ein Standarddokument als auch setzen. Jedoch haben wir es (und andere kleinere Belästigungen) schließlich bekommen, indem wir die urlrewriter-Konfiguration in eine andere Konfigurationsdatei als web.config verschoben haben.

Denken Sie daran, dass Sie auch Standarddokumente in IIS deaktivieren müssen, damit der urlrewriter ordnungsgemäß funktioniert. Das hat auch eine Menge nerviger Probleme verursacht.

EDIT: Vergessen Sie nicht, diese Zeile in Ihrer Konfigurationsabschnitte in web.config

<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/> 

hoffe, das hilft hinzuzufügen.

+0

Ich gebe das eine Chance, danke! – CodeMonkey1313

+0

das Hinzufügen zu einer separaten Konfigurationsdatei hat das Problem nicht behoben. – CodeMonkey1313

1

Dieser Code-Schnipsel funktioniert für mich:

<configSections> 
     <section name="rewriter" 
       requirePermission="false" 
       type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" 
     /> 
    </configSections> 

    <rewriter> 
     <default-documents> 
      <document>index.aspx</document> 
     </default-documents> 
    </rewriter> 

Edit: Seien Sie sicher, dass in dem Sie die Wildcard-Anwendung Karte hinzugefügt, können Sie auch nicht markiert „Stellen Sie sicher, dass Datei existiert“. Wenn Sie dies nicht tun, werden Standarddokumente nichts tun.

Eine weitere Änderung: Es wurde der Installationsschritt gefunden, der das Kontrollkästchen "Überprüfen, ob die Datei existiert" veranschaulicht. Siehe Schritt 8 here:

+0

Ich habe alle die gleichen configSections in Ihren und SirDemon Antworten aufgeführt. Ich habe die Zeile im Knoten httpModules.Ich habe reguläre Neuschreibknoten, die gut funktionieren. Es ist nur der Standarddokumentknoten, der nicht funktioniert. – CodeMonkey1313

+0

Überprüfen Sie meine Bearbeitung. Wo Sie die Platzhalteranwendungszuordnung hinzugefügt haben, haben Sie auch "Überprüfen, ob die Datei vorhanden ist" deaktiviert? Sonst werden keine Standarddokumente erstellt. – Moose

+0

Ja, ich habe die IIS-Einstellungen überprüft. Das schien das Problem nicht zu lösen. Ich denke, es ist die Laufzeit, die verwendet wird. – CodeMonkey1313

Verwandte Themen