此代码段是用托管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>
答案 0 :(得分:1)
CString::Replace
方法将要替换的字符串和要作为参数的字符串放入。 s.Replace( "foo", "bar" )
会将“tadafoo”转换为“tadabar”。
现在你的代码将用“/test.aspx?urlString”替换“anystring”。字面上。
我的猜测是,您希望将您的网址作为GET参数附加到“/text.aspx”网址,在这种情况下,您可以执行此操作:
CString newurl = "/text.aspx?urlString=";
newurl += urlString;
这将构成网址“/test.aspx?urlString=http://test/somethingelse.html”:一个GET请求,其中包含一个名为“urlString”的变量,其中包含您的原始网址。
你的asp应该读取带有request.QueryString[ "urlString" ]
的GET urlString变量为read on this website,否则看起来不错,但我并不是真的。
答案 1 :(得分:0)
你的问题
urlString.Replace(urlString, "/test.aspx?urlString");
正在尝试用“/test.aspx?urlString”替换整个urlString。
要实现这一点,您不能只用以下内容替换它吗?
urlString = "/test.aspx?urlString";
答案 2 :(得分:0)
根据您在其他答案中的评论,听起来像是您想要的:
CString newurl = "/test.aspx?UrlString=";
newurl += urlString;