2010-02-16 2 views
1

J'ai une application web que je déploie à plusieurs applications comme soi-Port dans l'URL

https://customerinternaldomain.com/thewebapp

Il y a des liens qui apparaissent beaucoup les fenêtres ouvertes. Dans le passé, je utilisais ce qui suit pour déterminer l'URL de la fenêtre à pop.

string appPath = this.Request.ApplicationPath; 
     if (!appPath.EndsWith ("/")) 
     appPath += "/"; 
     string sURL = this.Request.Url.Scheme + "://" + this.Request.Url.Authority 
     + appPath 

Alors je viens append sur le chemin vers la page de la fenêtre que je veux ouvrir comme si

appPath += "somefolder/window.aspx" 

L'une de nos installations vient d'emménager dans un port non standard, quelque chose comme 20055.

Je me suis donc trompé avec la possibilité de mettre en place un chemin d'accès complet pour vérifier que le port est bien inséré dans le chemin, mais puisque la webapp est mappée sur https://internaldomain.com/thewebapp au lieu de seulement https://internaldomain.com/ Demander des variables de serveur à fais ceci. Bien sûr, je peux bidouiller et couper avec des séparations ou quelque chose, ou stocker le chemin web de base dans un fichier de configuration qui est lu. Je me demandais juste si quelqu'un avait une façon propre de le faire. En supposant que quelque chose d'évident me manque, alors j'ai pensé que je mettrais les meilleurs et les plus brillants.

Merci pour toute aide que vous fournissez, je sais que le temps est précieux. Je vous en suis reconnaissant.

+0

Vous diffusez html sur http sur un port qui n'est pas 80, pour lancer une citation clichée, vous vous trompez. – marr75

+0

Il suit la spécification, je n'aime tout simplement pas les systèmes de production qui servent le html simple sur http sur des ports non standard. C'est une opinion, mais je parie que c'est une opinion assez commune pour appeler cela une bonne pratique. – marr75

Répondre

1

Je n'ai pas accès à un serveur ASP ou Visual Studio dès maintenant pour obtenir les détails, mais je sais que vous pouvez obtenir le nom de domaine, et le chemin d'URL à partir, de l'objet Request.Url . La recherche rapide me dit que c'est Request.Url.Host pour obtenir la partie internaldomain.com. Donc, vous auriez juste à ajouter le port à ceci, et à tout assembler.

Donc, ce serait quelque chose comme

schéma

+ ": //" + host + ":" + port "/" + currentPath + "/" + appPath

Comme je l'ai dit, Je ne peux pas vérifier les détails maintenant, mais je sais que l'objet Demande vous permettra d'accéder à toutes ces parties. Le port que vous pourriez devoir stocker quelque part, si vous allez d'un port à l'autre.

+0

Je pense que vous êtes sur la bonne voie. J'ai trouvé la réponse ici en débordement de pile http://stackoverflow.com/questions/689678/request-url-host-and-applicationpath-in-one-call J'ai utilisé la solution de MartinHN (à peu près à mi-chemin de la page). Je ne pensais pas que ça marcherait mais ça le fait. – infocyde

2
.Replace(".com", ".com:20055") 
+0

Ha. Oui, je pourrais le faire, mais les domaines internes ne se terminent pas toujours par .com, sinon je l'aurais fait dans un battement de coeur. +1 pour la simplicité qui aurait fonctionné compte tenu de ce que je vous ai dit. – infocyde

+2

Eh bien, vous pouvez toujours utiliser une regex pour déterminer la fin du domaine. :) Il y a un Regex.Replace vous savez! –