0

このコードスニペットは、マネージC ++で記述されたisapiリダイレクトフィルターの一部であり、プレフィックスが「http:// test / 」のURLリクエストをキャプチャします。URLがキャプチャされると、ルートにあるtest.aspxファイルにリクエストがリダイレクトされます。私のウェブアプリの。

次の方法で構文ヘルプが必要です。

1)「test.aspx」ページに表示される「urlString」パラメーターを渡します。問題の行:urlString.Replace(urlString、 "/test.aspx?urlString");

2)urlStringを表示するための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>
4

3 に答える 3

1

このCString::Replaceメソッドは、置換する文字列と配置する文字列を引数として取ります。 s.Replace( "foo", "bar" )「tadafoo」を「tadabar」に変換します。

これで、コードによって "anystring" が "/test.aspx?urlString" に置き換えられます。文字通り。

私の推測では、URL を「/text.aspx」URL に GET 引数として追加する必要があると思われます。その場合、次のようにすることができます。

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

これにより、"/test.aspx?urlString= http://test/somethingelse.html " という URL が作成されます。元の URL を含む "urlString" という名前の変数を使用した GET 要求です。

あなたの ASP は、このウェブサイトで読み取るrequest.QueryString[ "urlString" ]as を使用して GET urlString 変数を読み取る必要があります。

于 2009-08-27T05:16:54.773 に答える
0

あなたの問題行

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

urlString 全体を "/test.aspx?urlString" に置き換えようとしています。

これを達成するには、次のものに置き換えるだけではいけませんか?

urlString = "/test.aspx?urlString";
于 2009-08-26T14:49:49.270 に答える
0

他の回答のコメントに基づいて、あなたが望むように聞こえます:

CString newurl = "/test.aspx?UrlString=";
newurl += urlString;
于 2009-08-26T19:23:53.203 に答える