Request.RawUrl vs. Request.Url

74

Was ist der Unterschied zwischen Request.RawUrlund Request.Urlin ASP.NET?

Kerbou
quelle

Antworten:

55

Von MSDN:

Die unformatierte URL wird als der Teil der URL definiert, der den Domäneninformationen folgt. In der URL-Zeichenfolge http://www.contoso.com/articles/recent.aspxlautet die unformatierte URL /articles/recent.aspx.

Dies bedeutet, dass Sie verwenden können rawurlund sich nicht darum kümmern müssen, über welche Adresse der Server aufgerufen wurde (z. B. http://yourserver/oder http://yourserver.yourdomain.com/wenn Sie mehrere Schnittstellen haben).

Die URLEigenschaft eines HTTPRequestObjekts gibt jedoch ein System.URIObjekt zurück, das auch den Servernamen enthält.

Naivisten
quelle
16
Diese Erklärung impliziert fälschlicherweise, dass dies Request.RawUrlnur syntaktischer Zucker ist Request.Url.LocalPath.
Brian
3
@Brian es könnte hilfreich sein zu erklären, dass es nicht nur syntaktischer Zucker ist.
Mal Ross
10
@MalRoss: Sie können beim Umschreiben von Pfaden völlig unterschiedliche Pfade sein (z. B. 404-Handler). Siehe die Antwort des britischen Entwicklers
Brian
Ein Problem, das ich nicht lösen kann, ist das Abrufen der Standard-URL. Zum Beispiel bekomme ich nur ein "/" für localhost: 53188, aber ich möchte localhost: 53188 / Home / Index
JoshYates1980
62

Niemand scheint erwähnt zu haben, dass es die tatsächlich von IIS empfangene Raw-URL anzeigt, bevor eine Manipulation stattgefunden hat, die beispielsweise durch IIS oder Ihr Dateisystem gesendet wurde, wobei die URL neu geschrieben wurde.

/errorAngenommen, Sie haben in einer MVC-App eine Fehlerseite festgelegt und Ihre Webkonfiguration so eingestellt, dass die Fehlerseiten an dieser Stelle durch Ihre benutzerdefinierte Fehlerseite ersetzt werden. Auf diese Weise erhält /faultypageder Benutzer bei einem Fehler bei die Seite unter, /erroraber die URL in der Adressleiste Ihres Browsers sagt immer noch: www.mysite.com/faultypageDies ist eine Übertragung oder ein Umschreiben.

Wenn Sie jetzt auf Ihrem Fehlercontroller einen Blick darauf werfen möchten Request.Url, wird dies ungefähr so ​​aussehen www.mysite.com/errorund Request.RawUrl(nützlicher?) Sagen, /faultypagedass dies die tatsächliche Anforderung des Benutzers ist und nicht die Seite, die gerade ausgeführt wird.

Britischer Entwickler
quelle
6

In der Dokumentation zur HttpRequest.RawUrl-Eigenschaft wird der Eigenschaftswert wie folgt beschrieben:

Die unformatierte URL wird als der Teil der URL definiert, der den Domäneninformationen folgt. In der URL-Zeichenfolge http://www.contoso.com/articles/recent.aspxlautet die unformatierte URL /articles/recent.aspx. Die unformatierte URL enthält die Abfragezeichenfolge, falls vorhanden.

In der Eigenschaftendokumentation HttpRequest.Url wird der Eigenschaftswert wie folgt beschrieben:

Ein Uri- Objekt, das die URL der aktuellen Anforderung enthält.

Weitere Informationen zu den Eigenschaften finden Sie in der Dokumentation zur Uri-Klasse .

rahul
quelle