记录日志遇到了iframe的难题

yanwei100 2004-11-23 06:18:52
各位高手:
我的程序有个功能是用户访问一个页面,就要记录下来访问时间和被访问的页面的地址。也就是log功能。
我是在page_load中记录log的。但遇到了一个问题。
我的一个页面FramePage中包含一个iframe,当我在iframe中点连接时,页面刷新时,FramePage的page_load事件没有被触发,我试过其他方法,也无法截获URL。
我要的是在iframe中发生页面切换时,记录下页面的地址。



...全文
220 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
learner01 2004-11-29
  • 打赏
  • 举报
回复
up!
zgan 2004-11-29
  • 打赏
  • 举报
回复
Eddie005(╬) 暴赱 (╬) : 好久不见,现在混论坛了啊. 最近过的怎么样?
zgan 2004-11-29
  • 打赏
  • 举报
回复
对 用自定义 HTTP 处理程序同步处理 HTTP Web 请求 参阅
ms-help://MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemwebihttphandlerclasstopic.htm
zgan 2004-11-29
  • 打赏
  • 举报
回复
最节省资源的解决方案是JS:
在iframe页的unload(JS)中调用主页面的,savelog(url,date)函数,这个函数的功能是把记录添加到一个textbox里面(自己实现吧,不会很难的,留意分隔符不要和内容冲突:) ,主页面后台处理log(不多说了)


最微软的解决方案: 用自定义 HTTP 处理程序同步处理 HTTP Web 请求
using System.Web;
namespace HandlerExample
{
public class MyLogHandler : IHttpHandler
{
// Override the ProcessRequest method.
public void ProcessRequest(HttpContext context)
{
//记录你的日志,context 就是当前页面
}

// Override the IsReusable property.
public bool IsReusable
{
get { return true; }
}
}
}
web config 要改:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.htm" type="HandlerExample.MyLogHandler ,HandlerExample , Version=xxx, Culture=neutral, PublicKeyToken=xxxx "/>
</httpHandlers>
</system.web>
</configuration>

另外改IIS映射到*.htm

--------------------------------

jackliu812 2004-11-25
  • 打赏
  • 举报
回复
改为aspx文件吧,
webdiyer 2004-11-25
  • 打赏
  • 举报
回复
如果你有权限,可以直接读取IIS日志来分析被访问的文件:http://www.eggheadcafe.com/articles/20021203.asp
2002pine 2004-11-25
  • 打赏
  • 举报
回复
映射后就可以在
在global.asax的Application_BeginRequest中来实现
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
看来只好用asp或jsp了
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
不行的,因为我的iframe中的文件后缀是htm,IIS不会把htm的请求发给asp.net程序处理
jackliu812 2004-11-25
  • 打赏
  • 举报
回复
把日志记录的实现放到this.Init += new System.EventHandler(this.Page_Init);委托的方法中
private void Page_Init(object sender, System.EventArgs e)
{
...
}
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
我设置后还是不行啊。
我看到IE下面的状态栏上显示的地址是正确的,每次我点iframe中的连接都会显示正确的地址。我想应该是可以取到的
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
我把IIS重新启动也不行
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
我是直接把aspx对应的dll路径直接拷贝过去的,没有改,应该不会错的
2002pine 2004-11-25
  • 打赏
  • 举报
回复
不会吧,我的都可以,
你看一下影射的dll路径对不对.
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
我以前做过的一个项目既有asp,也有asp.net。要做权限检查,我本来也是这个思路,在global.asax的Application_BeginRequest中截获请求。但因为同样问题,无法截获。最后只好在asp中每个页面加一个权限判断的vb script函数
yanwei100 2004-11-25
  • 打赏
  • 举报
回复
To: 2002pine(在深圳真的很累)
我已经把htm的文件影射到asp.net上了。但是在global.asax的Application_BeginRequest中还是无法截获。这是为什么?
2002pine 2004-11-24
  • 打赏
  • 举报
回复
对了,如要用asp.net的机制来LOG,你在iis,directory,configuration,Mapping,中加上.htm -->C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll
yanwei100 2004-11-24
  • 打赏
  • 举报
回复
楼上提醒了我,我的iframe中显示的页面都是htm文件。
我就是想尽量少用aspx的页面文件。
不过这样一来,是不是就不能用asp.net的机制来LOG了。
2002pine 2004-11-24
  • 打赏
  • 举报
回复
我也在Application_BeginRequest中试过了,也无法截获.

是不是你的页面是html,不然是可以的
yanwei100 2004-11-24
  • 打赏
  • 举报
回复
>> webdiyer(陕北吴旗娃) 说
>>你的实现方法有问题,最简单而且实用的方法是:在global.asax的Application_BeginRequest中来实现。

我也在Application_BeginRequest中试过了,也无法截获.
加载更多回复(9)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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