Domanda

Avevo intenzione di utilizzare il routing degli URL per un'applicazione Web Form.Ma, dopo aver letto alcuni post, non sono sicuro che sia un approccio facile.

È meglio usare il Modulo Riscrittura URL per i moduli web?Ma è solo per IIS7.Inizialmente, si vociferava che il routing degli URL fosse totalmente disaccoppiato da Asp.Net MVC e potesse essere utilizzato per i moduli web.

Mi piacerebbe sentire qualche suggerimento..

È stato utile?

Soluzione

C'è un ottimo post qui sulle differenze tra i due da un membro del team IIS.

Un avvertimento che vorrei consigliare è che per WebForms è necessario fare attenzione quando si utilizza Routing.Ho scritto un'implementazione di esempio di come utilizzeresti instradamento con WebForm che affronta queste preoccupazioni e, si spera, aiuta a rispondere alla tua domanda.

Altri suggerimenti

Questo è il miglior articolo che ho trovato su questo argomento: Riscrittura degli URL IIS e routing ASP.NET di Ruslan Yakushev.

Riscrittura URL IIS

Quando un client effettua una richiesta al server Web per un particolare URL, il componente di riscrittura dell'URL analizza l'URL richiesto e lo modifica in un altro URL diverso sullo stesso server.Il componente di riscrittura dell'URL viene eseguito molto presto nella pipeline di elaborazione della richiesta, quindi è in grado di modificare l'URL richiesto prima che il server Web prenda una decisione su quale gestore utilizzare per elaborare la richiesta.

IIS URL Rewriting

Instradamento ASP.NET

Il routing ASP.NET viene implementato come modulo di codice gestito che si collega alla pipeline di elaborazione delle richieste IIS nella fase di risoluzione della cache (evento PostResolveRequestCache) e nella fase del gestore della mappa (PostMapRequestHandler).Il routing ASP.NET è configurato per essere eseguito per tutte le richieste effettuate all'applicazione Web.

IIS URL Routing

Differenze tra la riscrittura degli URL e il routing ASP.NET:

  1. La riscrittura degli URL viene utilizzata per manipolare i percorsi degli URL prima che la richiesta venga gestita dal server Web.Il modulo di riscrittura dell'URL non sa nulla su quale gestore elaborerà eventualmente l'URL riscritto.Inoltre, l'effettivo gestore della richiesta potrebbe non sapere che l'URL è stato riscritto.
  2. Viene utilizzato il routing ASP.NET inviare una richiesta a un gestore in base al percorso URL richiesto.A differenza della riscrittura dell'URL, il componente di routing conosce i gestori e seleziona il gestore che dovrebbe generare una risposta per l'URL richiesto.È possibile considerare il routing ASP.NET come un meccanismo avanzato di mappatura dei gestori.

Oltre a queste differenze concettuali, esistono alcune differenze funzionali tra la riscrittura degli URL IIS e il routing ASP.NET:

  1. Il modulo di riscrittura URL di IIS può essere utilizzato con qualsiasi tipo di applicazione Web, inclusi ASP.NET, PHP, ASP e file statici.Il routing ASP.NET può essere utilizzato solo con applicazioni Web basate su .NET Framework.
  2. Il modulo di riscrittura degli URL IIS funziona allo stesso modo indipendentemente dal fatto che per il pool di applicazioni venga utilizzata la modalità pipeline IIS integrata o classica.Per il routing ASP.NET è preferibile utilizzare la modalità pipeline integrata.Il routing ASP.NET può funzionare in modalità classica, ma in tal caso gli URL dell'applicazione devono includere estensioni di file oppure l'applicazione deve essere configurata per utilizzare il mapping del gestore "*" in IIS.
  3. Il modulo di riscrittura degli URL può prendere decisioni di riscrittura in base a nomi di dominio, intestazioni HTTP e variabili del server.Per impostazione predefinita, il routing ASP.NET funziona solo con percorsi URL e con l'intestazione HTTP-Method.
  4. Oltre alla riscrittura, il modulo di riscrittura URL può eseguire il reindirizzamento HTTP, emettere codici di stato personalizzati e richieste di interruzione.Il routing ASP.NET non esegue tali attività.
  5. Il modulo di riscrittura dell'URL non è estensibile nella sua versione attuale.Il routing ASP.NET è completamente estensibile e personalizzabile.

Vuoi che gli URL formattati siano una fabbrica per la generazione di pagine?

o vuoi far sparire il file .aspx?

riscrittura, serve per far scomparire il file .aspx o semplicemente per riordinare l'URL.

Il routing serve per esaminare una richiesta e determinare quale oggetto dovrebbe gestirla.Sembrano simili, Phil Haack ha alcuni buoni articoli sull'argomento.

in iis6, isapiRewrite, è molto buono

Recentemente ho scritto il mio sistema di riscrittura per migliorare l'aspetto degli URL sui miei siti.Fondamentalmente, dovrai scriverne uno tuo IHttpModule e aggiungilo al tuo web.config per intercettare le richieste in arrivo.Puoi quindi utilizzare HttpContext.Current.RewritePath per modificare ciò a cui stai puntando.

Ti consigliamo anche di configurare il tuo sito su usa aspnet_isapi per tutto.

Scoprirai molti piccoli problemi lungo il percorso, come provare a lavorare con pagine che utilizzano "code" su di esse (come per PageMethods), o il percorso degli elementi della pagina e i postback dei moduli, ma li supererai.

Se interessato, posso pubblicare un collegamento al codice e puoi verificarlo.Ho già risolto molti problemi in modo che tu possa leggerli man mano che procedi.Sono sicuro che ci sono anche molte altre persone che hanno fatto lo stesso e che potrebbero essere anche buone risorse.

Potresti voler dare un'occhiata al mio risposta a questa domanda: ASP.NET - Costruisci il tuo sistema di routing.Includo alcuni riferimenti utili per creare il proprio sistema di routing utilizzando il metodo di riscrittura degli URL o il nuovo motore di routing che è possibile utilizzare uscito dal progetto ASP.NET MVC.

Il progetto Dynamic Data disponibile con .Net 3.5 SP1 mostra un buon esempio di implementazione del routing URL.

Per la riscrittura degli URL su IIS, IIRF funziona in IIS5, 6, 7.Gratuito.Facile.Veloce.Open Source.Supporto per le espressioni regolari.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top