Domanda

In ASP.NET, non v'è alcun modo per ottenere il reale URL crudo?

Ad esempio, se un utente passa in rassegna a " http://example.com/mypage.aspx/ % 2F "vorrei essere in grado di ottenere" http://example.com /mypage.aspx/%2F "piuttosto che" http://example.com/mypage. aspx // ".

Vorrei ovviamente come un modo pulito per farlo, ma posso vivere con un approccio hacky utilizzando la riflessione o accedere alle proprietà della oscuri.

Al momento, cerco di usare l'URI nel Autorizzazione-header (che funziona), ma non posso fare affidamento su che sempre essere lì.

Modifica

Quello che voglio fare è quello di essere in grado di distinguere tra " http://example.com /mypage.aspx/%2F "e" http://example.com/ MyPage.aspx /% 2F% 2F ".

Sembra che ASP.NET converte prima "% 2F% 2F" in "//" e quindi converte le barre in una singola barra.

Quindi, solo ri-codifica non è andare a lavorare.

È stato utile?

Soluzione 2

Il seguente codice funziona per me:

IServiceProvider serviceProvider = (IServiceProvider)HttpContext.Current;
HttpWorkerRequest workerRequest = (HttpWorkerRequest)serviceProvider.GetService(typeof(HttpWorkerRequest));
string realUrl = workerRequest.GetServerVariable("HTTP_URL");

Si noti che questo funziona solo se in esecuzione su IIS e non sotto f.x. ASP.NET Development Server!

Grazie alla Lucero per la risposta in un altro thread e Zhaph per indicare me al thread.

Altri suggerimenti

Non ero in grado di testare questo perché funziona solo in IIS e non il server ASP.NET di sviluppo che fa parte di Visual Studio, ma provate:

Request.ServerVariables [ "HTTP_URL"]

 Server.HtmlEncode(Request.RawUrl);

L'URL prima è definita come la parte dell'URL seguito le informazioni sul dominio. Nella stringa URL http://www.contoso.com/articles/recent.aspx, l'URL crudo è /articles/recent.aspx. L'URL grezzo include la stringa di query, se presente.

vedi anche: link testuale

Non riesco a prova qui, ma questo potrebbe essere quello che ti serve:

Request.Url.AbsoluteUri

Request.RawUrl restituirà il percorso relativo dell'applicazione (incluse le informazioni querystring) mentre Request.Url restituirà il percorso completo (compreso informazioni querystring).

Per ulteriori informazioni, consultare la sezione " Dare un senso di percorsi ASP.NET ".

Bene, si può solo codificare torna alla versione con codifica URL.

Ottenere l'url dalla richiesta e urlencode solo la parte di stringa di query e poi concatenare

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