Obtenir L'Application en cours de Chemin d'accès Virtuel dans ASP.Net
À l'intérieur de la Application_Start de mon Global.asax.cs, je suis en train d'essayer d'obtenir l'application en cours de chemin d'accès à l'aide:
var virtualPath = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)
+ HttpRuntime.AppDomainAppVirtualPath;
Ce seront de retour pour exemple: http://localhost:99/MySite/
Je vais ensuite utiliser cette URL et effectuez les opérations suivantes:
var pageToHit = virtualPath + Pages\MyOtherPage.aspx
var client = new WebClient();
client.DownloadData(dummyPageUrl);
Tout cela est très bien, quand je lance le projet dans IIS 6 ou Visual Studio web server intégré, toutefois, les choses aller fou dans IIS 7 que j'ai un "Système.Web.HttpException: la Demande n'est pas disponible dans ce contexte".
Je suis conscient de ce thread: La demande n'est pas disponible dans ce contexte
Cependant, je me demandais si quelqu'un avait une idée sur la manière de faire ci-dessus, sans modification du projet pour s'exécuter en mode classique.
- Aussi, ce qui semble être un doublon de la Comment obtenir le nom complet de l'hôte + numéro de port dans Application_Start Mondiale.aspx? question: stackoverflow.com/questions/4243270/...
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas accéder à l'url absolue de la demande actuelle à l'intérieur de Application_Start lors de l'exécution en mode intégré. Vous pouvez accéder aux chemin d'accès virtuel nom à l'aide de
HostingEnvironment.ApplicationVirtualPath
mais pas une url absolue. Voici un article qui explique une solution de contournement commune. Comme expliqué dans l'article, vous avez 2 possibilités:Application_BeginRequest
à l'aide d'un verrou et d'un singleton pour s'assurer que cette initialisation est effectuée une seule fois pour l'ensemble de la durée de vie de l'AppDomain. Voici un fil similaire discuter de cette seconde approche.Application_Start
parce que vous ne connaissez pas l'adresse de cette page à ce stade. Aussi votre application est actuellement en cours d'initialisation et que vous essayez de déclencher des demandes. Semble une mauvaise approche pour moi. Qu'essayez-vous de réaliser? Pourquoi avez-vous besoin de frapper cette page dans Application_Start?