Comment puis-je obtenir l'URL complète de la page sur laquelle je me trouve en C#

StackOverflow https://stackoverflow.com/questions/40680

  •  09-06-2019
  •  | 
  •  

Question

Je dois pouvoir obtenir l'URL complète de la page sur laquelle je me trouve à partir d'un contrôle utilisateur.S'agit-il simplement de concaténer un ensemble de variables de requête ?Si oui, lesquels?Ou existe-t-il une méthode plus simple ?

Était-ce utile?

La solution

J'utilise habituellement Request.Url.ToString() pour obtenir l'URL complète (y compris la chaîne de requête), aucune concaténation n'est requise.

Autres conseils

Voici une liste à laquelle je me réfère habituellement pour ce type d’informations :

Request.ApplicationPath :   /virtual_dir
Request.CurrentExecutionFilePath :  /virtual_dir/webapp/page.aspx
Request.FilePath :  /virtual_dir/webapp/page.aspx
Request.Path :  /virtual_dir/webapp/page.aspx
Request.PhysicalApplicationPath :   d:\Inetpub\wwwroot\virtual_dir\
Request.QueryString :   /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.AbsolutePath :  /virtual_dir/webapp/page.aspx
Request.Url.AbsoluteUri :   http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Host :  localhost
Request.Url.Authority : localhost:80
Request.Url.LocalPath : /virtual_dir/webapp/page.aspx
Request.Url.PathAndQuery :  /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Port :  80
Request.Url.Query : ?q=qvalue
Request.Url.Scheme :    http
Request.Url.Segments :  /
    virtual_dir/
    webapp/
    page.aspx

J'espère que cela vous sera utile !

Request.Url.AbsoluteUri

Cette propriété fait tout ce dont vous avez besoin, le tout en un seul appel succinct.

Requête.RawUrl

si vous avez besoin de l'URL complète, du http à la chaîne de requête, vous devrez concaténer les variables suivantes

Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME") 
Request.ServerVariables("SCRIPT_NAME") 
Request.ServerVariables("QUERY_STRING")

Pour ASP.NET Core vous devrez l'épeler :

@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")

Ou vous pouvez ajouter une instruction using à votre vue :

@using Microsoft.AspNetCore.Http.Extensions

alors

@Context.Request.GetDisplayUrl()

Le _ViewImports.cshtml ce serait peut-être un meilleur endroit pour ça @using

Mieux vaut utiliser Request.Url.OriginalString que Request.Url.ToString() (selon MSDN)

Merci les gars, j'ai utilisé une combinaison de vos deux réponses @Christian et @Jonathan pour mon besoin spécifique.

"http://" + Request.ServerVariables["SERVER_NAME"] +  Request.RawUrl.ToString()

Je n'ai pas besoin de m'inquiéter du http sécurisé, j'ai besoin de la variable de nom de serveur et RawUrl gère le chemin à partir du nom de domaine et inclut la chaîne de requête si elle est présente.

Si vous avez également besoin du numéro de port, vous pouvez utiliser

Request.Url.Authority

Exemple:

string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();

if (Request.ServerVariables["HTTPS"] == "on")
{
    url = "https://" + url;
}
else 
{
    url = "http://" + url;
}

Essayez ce qui suit -

var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top