0

此代码片段是用托管 C++ 编写的 isapi 重定向过滤器的一部分,它将捕获带有前缀“ http://test/的 url 请求。一旦捕获了 url,它会将这些请求重定向到我在根目录下的 test.aspx 文件我的网络应用程序。

我需要一些语法帮助:

1)传递“urlString”参数以显示在我的“test.aspx”页面中。问题行:urlString.Replace(urlString, "/test.aspx?urlString");

2) 我的 aspx 页面显示 urlString 的语法

   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”。

现在您的代码将用“/test.aspx?urlString”替换“anystring”。字面上地。

我的猜测是您希望将您的 url 作为 GET 参数附加到“/text.aspx” url,在这种情况下您可以这样做:

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

这将组成 url “/test.aspx?urlString= http://test/somethingelse.html ”:一个 GET 请求,其中包含一个名为“urlString”的变量,其中包含您的原始 url。

您的 asp 应该读取 GET urlString 变量以及要在本网站上读取的request.QueryString[ "urlString" ]as ,否则看起来还不错,但我并不是很喜欢。

于 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 回答