Nelle versioni precedenti di asp.net, potremmo usareCome arrivare URL corrente in vista del core asp.net 1.0
@Request.Url.AbsoluteUri
Ma sembra che è cambiato. Come possiamo farlo in asp.net core 1.0?
Nelle versioni precedenti di asp.net, potremmo usareCome arrivare URL corrente in vista del core asp.net 1.0
@Request.Url.AbsoluteUri
Ma sembra che è cambiato. Come possiamo farlo in asp.net core 1.0?
È necessario ottenere l'host e il percorso separatamente.
@[email protected]
Questo non verrà segnalato l'url corretto se l'app si trova in una directory virtuale. Dovrai inserire il prefisso ** Request.Path ** con il valore ** Request.PathBase ** se ce n'è uno. Questo vale per quasi tutte le altre risposte a questa domanda. – padigan
Che cosa è questo '@' tra le due stringhe? potresti spiegarlo? –
@ MahammedNoureldin: questa è la sintassi della vista del rasoio. –
È necessario schema, host, il percorso e queryString
@string.Format("{0}://{1}{2}{3}", Context.Request.Scheme, Context.Request.Host, Context.Request.Path, Context.Request.QueryString)
o utilizzando il nuovo C# 6 funzione "String interpolazione"
@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")
Come si ottiene il frammento, ad esempio http://test.com/abc#123, come si ottiene il frammento # 123 dalla richiesta? –
@fanray Non puoi. I browser non inviano frammenti di URI al server – tmg
Utilizzare il absoluteURI proprietà della Uri , con .Net core devi costruire l'Uri da una richiesta come questa,
var location = new Uri($"{Request.Scheme}://{Request.Host}{Request.Path}{Request.QueryString}");
var url = location.AbsoluteUri;
ad es. se l'url della richiesta è 'http://www.contoso.com/catalog/shownew.htm?date=today', verrà restituito lo stesso URL.
Cose come questa mi fanno pensare. Net Core è un passo indietro in qualche modo. È meglio di Request.Url in Asp.Net in un modo che non riesco a immaginare? – Soenhay
public string BuildAbsolute(PathString path, QueryString query = default(QueryString), FragmentString fragment = default(FragmentString))
{
var rq = httpContext.Request;
return Microsoft.AspNetCore.Http.Extensions.UriHelper.BuildAbsolute(rq.Scheme, rq.Host, rq.PathBase, path, query, fragment);
}
È possibile utilizzare il metodo di estensione di Request
:
Request.GetDisplayUrl()
Funziona se si aggiunge '@utilizzando Microsoft.AspNetCore.Http.Extensions', quindi' @ Context.Request.GetDisplayUrl() ' –
si ottiene ancora - La richiesta non esiste nel contesto corrente – SeanKPS
Se stai cercando di ottenere anche il numero di porta fuori della richiesta è necessario accedervi tramite la proprietà Request.Host
per AspNet Core.
La proprietà Request.Host
non è semplicemente una stringa ma, al contrario, un oggetto che contiene sia il dominio host sia il numero di porta. Se il numero di porta è nello specifico nell'URL (ad esempio "https://example.com:8080/path/to/resource"
), quindi chiamando Request.Host
si otterrà il dominio host e il numero di porta in questo modo: "example.com:8080"
.
Se si desidera solo il valore per il dominio host o solo il valore per il numero di porta, è possibile accedere a tali proprietà singolarmente (ad esempio Request.Host.Host
o Request.Host.Port
).
Ti piace questo? http://stackoverflow.com/questions/28120222/get-raw-url-from-microsoft-aspnet-http-httprequest – DavidG
@DavidG Sembra che ora puoi utilizzare UriHelper.GetDisplayUrl (Ricerca) –