Si tu veux effectuer une action à chaque requête entrante, regarde du côté du global.asax et de l'événement BeginRequest
Version imprimable
Si tu veux effectuer une action à chaque requête entrante, regarde du côté du global.asax et de l'événement BeginRequest
Bonjour
J'explore un peu les concept et au plus j'avance au plus je me demande pourquoi ce a quoi je pensais ne peut pas marcher simplement
En gros j'imaginais remplacer WebForm1.aspx par un truc du genre :
// Pour l'include je n'y crois pas trop car je vais mixer du vb et du C#Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <%@ Page Language="C#" AutoEventWireup="true" %> <script language="C#" runat=server> // Mon code // Mais je ne sais pas comment acceder la commande http utilisee </script> <%--Rappel de WebForm1.aspx avec la commande originale // j'ignore la syntaxe --%> // Ou bien <!--#include file="WebForm1.asp"-->
Le truc, c'est que la classe WebForm1 est déjà définie dans le code-behind dont tu n'as pas les sources et qui est compilé dans la DLL. La classe générée par le compilateur aspx à partir du fichier WebForm1.aspx hérite de la classe WebForm1, donc tu peux peut-être overrider certaines méthodes, mais ça va être un peu galère... Tu as vraiment pas moyen de récupérer les sources ??
Impossible !Citation:
Tu as vraiment pas moyen de récupérer les sources ??
Le gros malin qui m'a bricolé ca est dans la nature
Je t'explique
Sur le serveur J'ai un module qui tourne dans Inetpub
Ce sont des dll vb et cette page principale WebForm1
La plupart des requetes exterieures http appellent cette page WebForm1
Plusieurs traitement sont fait et en definitive des fichiers txt sont pondu en append avec le contenu http original reformaté (un fichier par client)
Un autre gros malin (mais il a laissé les sources celui-la) plutot que de s'organiser avec le premier s'est contenté d'écrire un truc de son coté en Csharp et de faire du polling de lecture des fichier pondu par le premier :aie::aie:
Je remet de l'ordre dans tout ce bingz et une premiere chose que j'aimerais faire avant de tout réecrire, c'est de supprimer ce polling et intercepter la requete http a la source sans perturber le traitement lancé par Webform1 qui a encore une utilité ailleurs !
Pour info je repete quand meme que Webform1.aspx actuelle ne contient QUE ceci, pas une virgule de plus
Dans ma petite tete, je pense ceciCode:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="findMe.WebForm1"%>
1- C'est Webform1.aspx qui déclanche ses traitements dans findme
2- la commande http n'a pas de connaissance de ce que webform1 va faire
DONC
Pourquoi on ne peux pas truquer en faisant une AUTRE webform1.aspx qui appelle une fonction csharp dans une Autre dll et meme un AUTRE namespace
Et ensuite on rappelle webform1 comme si la requete venait en http ?
tu peux toujours regarder le code de la DLL avec Reflector...
Mais je n'ai pas besoin du code de la DLL !
Je veux juste pecher la commande http avant qu'elle ne soit passée a WebForm1 pour ensuite la repasser dans son integralité pour eviter de faire du polling pour devoir la retrouver Apres coup dans les log de la DLL
Meme si je n'ai jamais fait ni de site web ni d'aspx je suis de plus en plus convaincu que ce que je veux faire est tout a fait possible asser facilement
Quand j'aurai trouvé et JE VAIS trouer je vous expliquerai comment j'ai fait !
Bah au lieu d'appeler webform1, faut appeler webform2.
Dans webform2, tu fais ton traitement puis à la fin de celui-là, tu fais un response.redirect(webform1)
Et bien voila ! :D
C'est ce que j'essaye d'expliquer depuis ce matin (sans doute tres mal) :aie::traine:
Et donc pour avoir un petit coup de pouce je voulais juste savoir la syntaxe qu'aurait ma WebForm2 jute pour ecrire la cammande http dans un fichier par exemple et pui rappeler Webform1 avec cette meme commande
Avec ca je suis parti pour l'aventure !
Pour l'url: var url = Request.Url.AbsoluteUri;
Puis, Response.Redirect("WebForm1.aspx");
Bonjour LuteceFalco
J'essaye toujours de comprendre tres vite avec mes connaissance encores nulles en ASPX.
Toutefois si je reprends l'exemple que tu m'a montré par rapport a ce que j'ai essayé d'expliquer, ta solution (a mon avis) ne pourrait pas marcher
A mon avis (mais je n'ai certainement pas ton expérience) je devrais plutot faire un truc comme caCitation:
Pour l'url: var url = Request.Url.AbsoluteUri;
Puis, Response.Redirect("WebForm1.aspx");
Donc je ne sais pas si je dois faire un Replace dans l'url capturé ouCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // 1 : recuperer l'url utilisé var url = Request.Url.AbsoluteUri; // 2 : faire mon traitement avec les parametres de cet url // 3 : finalement rediriger vers la webform1 qui s"appelle maintenant Webform2 // MAIS avec les parametres originaux // // Ceci ne peux pas marcher evidemment puisque ce n'est plus webform1 Response.Redirect("WebForm1.aspx"); // Ceci NON PLUS (a mon avis) puisque je ne donne pas les parametres Response.Redirect("WebForm2.aspx");
s'il y a une autre maniere de faire
Je pense que ce que lutecefalco a tenté de t'expliquer c'est cela: Tous tes traitements appellent la webform1 donc tu vas dans cette apge et tu la reecris pour qu'elle n'aille pas pecher son code behind :
webform1.aspx :
Tu as donc une autre classe qui va derivée de Page :Code:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebFormAjoutee.aspx.vb" Inherits="monnamespace.WebFormAjoutee"%>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 namespace monnamespace { public class WebFormAjoutee :Page { PageLoad { tes traitements... //ensuite redirect vers une autre page server.transfer ou repsonse.redirect au choix (MAdeuxiemePAge.aspx) } } }
MAdeuxiemePAge.aspx:
Je ne sais pas si cela résoudra ton probleme, et je t'avouerais que je n'ai jamais fait de bricolage comme ca mais je pense que cela devrait fonctionner...Code:<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="findMe.WebForm1"%>
Bon courage en tout cas,
Bien evidemment dans la redirection , tu lui rebalances toutes les infos qui avaient amenés l'appel initial.
tu peux faire ca grace à request.form ou request.querystring.
Merci a tous
Je vais chipoter a ca ca me permettra d'apprendre beaucoup de choses d'un coup
Et je donne le feed-back
Bonjour
La solution expliquée par luteccefalco et Arthis est bien conceptuellement ce que je veux faire
Je mais reflechis encore au code nécessaire
Sachant que
1
Webform1.aspx se trouve sur //InetPub/wwwroot/findme2
La dll de Webform1 se trouve sur //InetPub/wwwroot/findme2/bin
Deja je ne comprends pas comment Webform1.aspx sais ou se trouve sa dll ?
2
Le traitement que je veux intercaller va se trouver dans une autre app web qui est ailleurs sur le meme serveur sur
//memopas/web
Je pense donc que le plus simple sera d'ajouter du code inline dans ma pseudo Webform1 que je laisserai sur //InetPub/wwwroot/findme2
Mais je ne vois pas comment dans ce code inline je peux faire reference a des dll qui sont dans //memopas/web/bin
En fait mon gros probleme de compréhension c'est la communication entre les pages et entre projet sur un site web et la définition des chemins d'acces
Bonjour TomLev
Oui j'avais pensé a ca mais j'ai ici deux application distincte dont je ne maitrise pas la partie des dll qui se trouvent sur //inetpub/Citation:
Ce serait plus simple de tout mettre dans la même application... pourquoi tu ne mets pas simplement les fichiers de //memopas/web dans //inetpub/wwwroot/findme ?
Tandis que j'ai heurusement la main sur celle de //memopas/web
Donc j'aimerais ne pas tout melanger tout de suite et d'ailleurs la partie tournant actuellement sur inetpub devra disparaitre un jour
En plus mon manque d'experience dans la redirection des acces sur un site web me bloque un peu pour le moment
Et a nouveau j'ai du mal a croire qu'on ne peux pas référencer une dll par son chemin en inline asp. Mais j'avoue je ne sais pas comment
J'espere que dans quelque jours j'aurai quitté ce cauchemard du débutant
Sur un autre plan je suis un peu amusé du niveau d'aide que l'on peut recevoir en fonction des Forum
1- Sur C# c'est génial il y a une communauté tres active et conviviale, on se tutoie les idées s'échangent tres vite
2- Sur SQL, c'est beaucoup plus protocolaire, on se vouvoie et l'on percoit une certaine distance !
3- Sur ASP j'ai l'impression d'etre un schtroumpf chez les éléphant, circulez SVP !
Bonjour
A force de bricolage je pense avoir touvé le bon systeme
Il suffit de bricoler un script VB dans la page WebForm1.aspx pour forker la requete vers ma page a moi !
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="findMe.WebForm1"%> ' Code ajouté : <% Dim getVariables As New NameValueCollection getVariables = Request.QueryString Dim getInfo As String = "imei=" + getVariables.Get("imei") + "&rmc=" + getVariables.Get("rmc") Dim uri As New Uri("http://192.168.1.88/memopas/getDevice.aspx?" + getInfo) 'Response.Write("1." + uri.ToString()) If Uri.Scheme = Uri.UriSchemeHttp Then 'Response.Write("2." + uri.ToString()) Dim client As New System.Net.WebClient() client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)") client.OpenRead(uri) 'Response.Write("3." + uri.ToString()) End If %>