2009-08-26 10 views
0

このコードスニペットは、マネージC++で記述された接頭辞「http://test/」のURLリクエストを取得するisapiリダイレクトフィルタの一部です。このURLが取得されると、リクエストがtest.aspxファイルiにリダイレクトされます。私はどのようにいくつかの構文ヘルプ必要C++、パラメータを渡すための構文

私のWebアプリケーションのルートにあります

1)私の「Test.aspxという」ページに表示する「urlString」パラメータを渡す問題の行:。 urlString .resplace(urlString、 "/test.aspx?urlString");

2)urlStrを表示するmy aspxページの構文

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

これは私がよく知っている管理されたC++の方言のようには見えません...これはちょうどC++です、そうですか? –

答えて

1

CString::Replace方法がto--交換することが文字列と文字列からなる-プットを取ります。他の回答で、あなたのコメントに基づいて

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

これが機能し、以下のコード行が続きます。 urlString.Replace(urlString、newurl); –

0

をINGの

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

のあなたの問題行は "/test.aspx?urlString" と全体urlStringを交換しようとしています。

これを達成するには、次のように置き換えることはできませんか?

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

私はちょうどそれをテストし、url:response.write(request.querystring( "UrlString"))を表示するために私の.aspxページ(vb)で以下を使用しています。いいえ、これは正しいですか? –

+0

あなたはどんな結果を期待しましたか、実際に何を得ましたか? –

+0

私の.aspxページにURLを表示したいのですが、私の方法は明らかに間違っています。b/c私は空白の画面を表示しています。また試みましたが、dim url as String = Request.QueryString( "UrlString")response.write(url) –

0

、それはあなたが望むように聞こえます-in-placeを引数として使用します。 s.Replace("foo", "bar")は "tadafoo"を "tadabar"に変換します。

あなたのコードは "anystring"を "/test.aspx?urlString"に置き換えます。文字通り。

私の推測では、あなたのURLは、あなたがこれを行うことができ、その場合にはGETの引数として「/text.aspx」URLに付加されるようにしたいということです。

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

これはURLを構成します」 /test.aspx?urlString= http://test/somethingelse.html ":元のURLを含む" urlString "という名前の変数を持つGETリクエスト。

あなたのaspは、request.QueryString[ "urlString" ]というGET urlString変数を読み取ってread on this websiteとなるはずです。それ以外の場合はうまくいくように見えますが、実際にはそうではありません。

+0

ありがとうございますが、このメソッドはリダイレクトをmy test.aspxページに適用しません。 –

関連する問題