Domanda

Voglio realizzare un servizio di riposo in ASP.NET. Io voglio che sia compatibile con .Net 2.0 e IIS 5+. Sono costretto a non utilizzare ASP.NET MVC o starter kit REST. Leggendo su internet ho imparato che può essere implementato utilizzando httpHandlers. Il problema è, la richiesta verrà in come una richiesta POST. E voglio URL essere come:

http://abc.com/MyService/MyMethod1/ e http://abc.com/MyService/MyMethod2/

alcuna soluzione alternativa per questo?

Grazie, Vamyip

È stato utile?

Soluzione

La soluzione migliore è quella di utilizzare la riscrittura degli URL. Questo non è banale in IIS5. I metodi che conosco sono i seguenti:

Metodo 1 - filtro ISAPI

Questi sono i moduli di basso livello che consentono di manipolare la richiesta in ingresso. Programmazione uno di questi è peloso e difficile da debug. Se si va questa strada, si sta meglio utilizzando uno che è già stato costruito come ISAPI_Rewrite .

Metodo 2 - IHttpModule

Queste sono gestite moduli ASP.Net che sono facili da aggiungere / rimuovere dalla propria applicazione. Anche in questo caso, si sta meglio utilizzando un componente pre-costruito come UrlRewriter.NET . Il problema con l'utilizzo di uno di questi, (come cita BrainLy), è che si deve configurare IIS 5 di mappare tutte le richieste in arrivo a ASP.Net come segue ( link ):

  1. Open Up IIS e accedere alla “Scheda Home directory”
  2. Selezionare “Configurazione”
  3. Fai clic su “Aggiungi” e inserire “C: \ WINNT \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll” nella casella eseguibile. Per l'estensione del file, inserire “*”. Infine, assicurarsi che “Controllare tale file esiste” non sia selezionata.

Una cosa interessante da notare è che ASP.Net è di per sé un modulo ISAPI:)

Una volta che siete in grado di manipolare gli URL che utilizzano uno di questi strumenti, si può facilmente riscrivere gli URL RESTful per essere gestito da tua pagina default.aspx (o qualunque gestore si sceglie di utilizzare).

Altri suggerimenti

Se è possibile consentire la limitazione di IIS solo 7.0 e versioni successive è possibile utilizzare URL Rewrite http: // www .iis.net / download / URLRewrite di farlo abbastanza facilmente.

Posso chiedere perché è esso che è necessario il supporto di IIS 5+? Questa è una vecchia tecnologia 11 anni che si spera la gente uscire di queste piattaforme a favore di versioni più recenti. Anche tenere a mente il supporto per alcune di queste piattaforme sta finendo molto presto.

Se la preoccupazione è sviluppatori che eseguono Windows XP vorrei sottolineare che IIS Express include la versione 7.5+ funzionalità ed è disponibile per tutte le piattaforme Windows XP e sopra.

Credo che questo sarà difficile da fare perché IIS 5 non ti consente di gestire le estensioni di file non ASP.NET senza alcune configurazioni aggiuntive in IIS. Ciò significa che si sono limitati agli URL che terminano in aspx ecc Per gestire gli URL come quelle nei tuoi esempi è necessario mappare ASP.NET per gestire tutti gli URL in IIS, implementare un certo tipo di riscrittura degli URL, o introdurre un qualche tipo di hacky 404 reindirizzamento .

Una volta che hai la mappatura corretta in luogo è possibile cablare un IHttpHandler, ma si dovrà analizzare la richiesta in arrivo da soli per capire quale è / MyService / MyMethod1 / e che è per / MyService / MyMethod2 /. Se i metodi sono semplici, allora è facile fare questo con un'espressione regolare.

Si dovrebbe iniziare con un gestore di semplice come questo .

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