Comment obtenir le nom complet de l'hôte + numéro de port dans Application_Start Mondiale.aspx?
J'ai essayé
Uri uri = HttpContext.Current.Request.Url;
String host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;
et il a bien fonctionné sur ma machine locale, mais lors de la publication de l'IIS7, il existe une exception en disant
System.Web.HttpException: Request is not available in this context
Ce que quelqu'un sait comment faire?
- vérifier le port
- On dirait que vous êtes en cours d'exécution en mode intégré, pas classique (qui, je pense, vous êtes en cours d'exécution sur votre région). Le problème est que la Demande n'est pas disponible dans Application_Start dans IIS7. Regardez: mvolo.com/blogs/serverside/archive/2007/11/10/... Qui explique bien.
- Voir aussi stackoverflow.com/a/578083/12484 pour un nettoyeur de façon à obtenir le schéma de + hôte + port à partir d'une URL (une fois que vous en avez un).
Vous devez vous connecter pour publier un commentaire.
Lorsque votre application web commence, il n'y a pas de requête HTTP en cours de gestion.
Vous pouvez gérer définir la Application_BeginRequest(Object Sender, EventArgs e) de la méthode dans le contexte de Demande est disponible.
Edit: Voici un exemple de code inspiré par le Mike Volodarsky blog que Michael Shimmins liés à:
Uri uri = context.Request.Url;
aussi ne pouvait pas la prochaine ligne est simplifiée pour simplementuri.GetLeftPart(UriPartial.Authority);
host
? Ma conjecture est un problème de concurrence dans le cas où la valeur est définie dans ce petit espace de temps, mais il suffit de double vérification pour voir si c'était une erreur.Accepté la réponse est bonne, mais dans la plupart des cas (si la première requête est une Requête HTTP), vous devriez plutôt utiliser la
Session_Start
événement, qui est appelé qu'une seule fois par utilisateur et toutes les 20 minutes (pas sûr de combien de temps la session est valide).Application_BeginRequest
sera déclenché à chaque Demande.Juste de répondre à cela, donc si quelqu'un décide d'en fait de recherche sur ce sujet...
Cela fonctionne au démarrage de l'application dans n'importe quel mode...
HttpContext.Current.Request
??? Je vois le même résultat