2009-08-26 8 views
0

Cet extrait de code fait partie d'un filtre de redirection isapi écrit en C++ géré qui va capturer les requêtes url avec le préfixe "http://test/" Une fois l'URL capturée, elle redirigera ces requêtes vers un fichier test.aspx. ont à la racine de mon application webC++, syntaxe pour le passage de paramètres

J'ai besoin d'aide de la syntaxe comment:.

1) passer le paramètre « urlString » à afficher dans ma page « test.aspx » ligne de problème. urlString .Replace (urlString, "/test.aspx?urlString");

2) syntaxe pour ma page aspx pour afficher urlStr ing

DWORD CRedirectorFilter::OnPreprocHeaders(CHttpFilterContext* pCtxt, 
      PHTTP_FILTER_PREPROC_HEADERS pHeaderInfo) 
     { 
      char buffer[256]; 
      DWORD buffSize = sizeof(buffer); 
      BOOL bHeader = pHeaderInfo->GetHeader(pCtxt->m_pFC, "url", buffer, &buffSize); 
      CString urlString(buffer); 
      urlString.MakeLower(); // for this exercise 



      if(urlString.Find("/test/") != -1) //insert url condition 
     { 


      urlString.Replace(urlString, "/test.aspx?urlString"); 


       char * newUrlString= urlString.GetBuffer(urlString.GetLength()); 
       pHeaderInfo->SetHeader(pCtxt->m_pFC, "url", newUrlString); 
       return SF_STATUS_REQ_HANDLED_NOTIFICATION; 
      } 
     //we want to leave this alone and let IIS handle it 
      return SF_STATUS_REQ_NEXT_NOTIFICATION; 
     } 

-------------- aspx page 

<html> 
<body> 
<% 
dim url as string = request.querystring("urlString") 
response.write(url) 

%> 
</body> 
</html> 
+2

Cela ne ressemble à aucun dialecte C++ géré avec lequel je suis familier ... C'est juste du C++, non? –

Répondre

1

La méthode CString::Replace prend la chaîne-être à remplacer et la chaîne à être-vente -in-place comme arguments. s.Replace("foo", "bar") convertira "tadafoo" en "tadabar".

Maintenant votre code remplacera "anystring" par "/test.aspx?urlString". Littéralement.

Je suppose que vous voulez que votre URL à ajouter à l'URL « de /text.aspx » comme argument GET, dans ce cas, vous pouvez le faire:

CString newurl = "/text.aspx?urlString="; 
newurl += urlString; 

Cela composera l'url " /test.aspx?urlString= http://test/somethingelse.html ": une requête GET avec une variable nommée" urlString "contenant votre URL d'origine.

Votre ASP devrait lire la variable GET urlString avec le request.QueryString[ "urlString" ] comme étant read on this website, et semble très bien autrement, Mais je ne suis pas vraiment dans cela.

+0

cela a fonctionné, suivi par une ligne de code ci-dessous. urlString.Replace (urlString, newurl); –

0

Votre ligne de problème de

urlString.Replace(urlString, "/test.aspx?urlString"); 

tente de remplacer l'ensemble urlString avec "/test.aspx?urlString".

Pour ce faire, ne pouvez-vous pas simplement le remplacer par ce qui suit?

urlString = "/test.aspx?urlString"; 
+0

Je viens de le tester et j'utilise ce qui suit avec ma page .aspx (vb) pour afficher l'url: response.write (request.querystring ("UrlString")). pas de chance, est-ce correct? –

+0

À quel résultat vous attendiez-vous et qu'avez-vous réellement obtenu? –

+0

je veux afficher l'url sur ma page .aspx mais ma méthode est évidemment incorrecte b/c je reçois juste un écran vide. aussi essayé, dim url comme String = Request.QueryString ("UrlString") response.write (url) –

0

Sur la base de vos commentaires dans les autres réponses, il semble que vous voulez:

CString newurl = "/test.aspx?UrlString="; 
newurl += urlString; 
+0

Merci mais cette méthode n'applique pas la redirection à ma page test.aspx. –

Questions connexes