写ISAPI过滤器时被CSTRING的小问题卡住了

笨笨兔兔兔兔兔 2006-08-21 09:22:18
DWORD CIsapi1Filter::OnUrlMap(CHttpFilterContext* pCtxt,
PHTTP_FILTER_URL_MAP pMapInfo)
{
if (strstr (pMapInfo->pszURL, "www.icfamily.com"))
{
CHAR szRedirect [256];
CString cs_temp;
cs_temp.Format(_T("%s"),pMapInfo->pszURL);
cs_temp.Replace("www.icfamily.com","index.shtml");
cs_temp.Replace("http://","");

sprintf(szRedirect, "Location: http://%s\r\n\r\n",cs_temp);
pCtxt->ServerSupportFunction ( SF_REQ_SEND_RESPONSE_HEADER,
(LPVOID) "302 Redirect",
(DWORD *) szRedirect,
0 );

VC6用的少一些对一些基本概念不是非常了解,看了一下MSDN对于cstring的解释,并参考了一个网站的一篇文章写的,但是是有问题,谢谢各位,解决一下我的困惑,cstring在这里是不是应该这么用?

http://www.blog.com.cn/user15/mayaya/archives/2005/123622.shtml
...全文
417 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodboyws 2006-08-22
  • 打赏
  • 举报
回复
俺来分析一下,这段程序的功能为用http://localhost/www.icfamily.com来访问index.shml
貌似pMapInfo->pszURL的内容为www.icfamily.com,楼主的最后结果为Location: http://index.shtml\r\n\r\n(少了localhost),因此重定向不成功http://localhost/www.icfamily.com无法访问
zhuanqiann 2006-08-22
  • 打赏
  • 举报
回复
本公司为推广宣传公司产品,诚聘网络推广员。条件不限,只要家中有电脑,

或者上班能上网的工作职员,会发邮件会利用QQ联系业务,

宣传广告,信息发布,论坛发贴等方法宣传,有高额提成回报。

可利用业余时间兼职,根据业绩每月最高可获报酬3000元左右。

详情请登陆:http://897288.com/?id=whui

进入网站后可以点击网站上的“运作模式”,

若有信心推广此网站,请联系每天8小时在线客服QQ:704757003。

正式录用后赠送正版QQ好友群发软件和宣传资料。由于咨询者较多,

请先看完网站内容后再做咨询,谢谢合作!
  • 打赏
  • 举报
回复
to handsomerun(毛毛)

ringphone 上个帖子没给他分欠了50分....呵呵
goodboyws 2006-08-21
  • 打赏
  • 举报
回复
你先把网络相关代码注掉,看看字符串对不对,再有就是写log文件
  • 打赏
  • 举报
回复
今天圆满过好几次了,不停的关w3wp导致不得不重启机器数次
handsomerun 2006-08-21
  • 打赏
  • 举报
回复
……………………………………
这下圆满了……………………

  • 打赏
  • 举报
回复
好的,哈哈,我个大白痴,被goodboyws骗了.....还正想呢iis上加个message能出个啥东西,这下好

了,来个崩溃.......
ringphone 2006-08-21
  • 打赏
  • 举报
回复
接分来了:)

CString cs_temp;
cs_temp.Format(_T("%s"),pMapInfo->pszURL);
cs_temp.Replace("www.icfamily.com","index.shtml");
cs_temp.Replace("http://","");

sprintf(szRedirect, "Location: http://%s\r\n\r\n",cs_temp);

用法是对的,但如果pMapInfo->pszURL不是http://localhost/www.icfamily.com结果就不对了。
还有试试
cs_temp.Replace(_T("www.icfamily.com"),_T("index.shtml"));
cs_temp.Replace(_T("http://"),"");
handsomerun 2006-08-21
  • 打赏
  • 举报
回复
呵呵
最好,每一次执行完字符窜操作,都box出来

这样就能看到哪一步出问题啦,嘿嘿

goodboyws 2006-08-21
  • 打赏
  • 举报
回复
加AfxMessageBox(pMapInfo->pszURL);
......
AfxMessageBox(szRedirect);
看看值对不对
  • 打赏
  • 举报
回复
//cs_temp.Replace("http://","");
sprintf(szRedirect, "Location: %s/r/n/r/n",cs_temp);

一样是不可以的,所以很困惑
  • 打赏
  • 举报
回复
btw: sprintf(szRedirect, "Location: %s/r/n/r/n",cs_temp); 我也试验过的
  • 打赏
  • 举报
回复
TCHAR szRedirect [256];
CString cs_temp;
cs_temp.Format(_T("%s"),pMapInfo->pszURL);
cs_temp.Replace("www.icfamily.com","index.shtml");
cs_temp.Replace("http://","");
sprintf(szRedirect, "Location: http://%s\r\n\r\n",cs_temp);

url: http://localhost/www.icfamily.com 无法显示网页

这个是我改以后的,依旧有问题
goodboyws 2006-08-21
  • 打赏
  • 举报
回复
有可能你的输入不是http://localhost/www.icfamily.com
例如http://localhost/www.icfamily.com/index.shtml
handsomerun 2006-08-21
  • 打赏
  • 举报
回复
TCHAR szRedirect [256];
TCHAR aaa[256]="http://localhost/www.icfamily.com" ;
CString cs_temp;
cs_temp.Format(_T("%s"),aaa);
cs_temp.Replace("www.icfamily.com","index.shtml");


sprintf(szRedirect, "Location: %s/r/n/r/n",cs_temp);

这里,你只要把aaa换成pMapInfo->pszURL
我想,你应该是要这个吧???
  • 打赏
  • 举报
回复
to handsomerun

显然了,我是web的版主,url我可不会弄错的....呵呵
  • 打赏
  • 举报
回复
逻辑很好想的,所以不怕url不对,但是我对vc6,调试已经很不熟悉了,如果让我跟踪的话,恐怕暂时

做不了....
handsomerun 2006-08-21
  • 打赏
  • 举报
回复
就是说把www.icfamily.com
换成index.shtml咯????
  • 打赏
  • 举报
回复
仅仅是一个试验

http://localhost/www.icfamily.com

->
http://localhost/index.shtml
goodboyws 2006-08-21
  • 打赏
  • 举报
回复
cs_temp.Replace("www.icfamily.com","index.shtml");
应该就是这一句不对
加载更多回复(6)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧