图像重定向和日志记录

本文关键字:记录 日志 重定向 图像 | 更新日期: 2023-09-27 18:29:05

我们为图像(jpg)创建一个唯一命名的请求,我们需要重定向它并收集它请求的名称。我们在Global.asax中尝试过这样做,在Dev中效果很好,但在生产中似乎没有成功。

它必须是一个图像(请求以jpg结尾),或者我们之间的一些处理器,客户端会将请求剥离。这是在一个虚拟目录中运行的,该目录除了这些映像请求之外几乎不执行其他操作。MVC不是一种选择。

Ex. request = domain/Copyright_123456789.jpg
    response =  domain/images/Copyright.jpg
    collect = 123456789 and place in database

代码

    void Application_BeginRequest(object sender, EventArgs e)
    {
        if (Request.AppRelativeCurrentExecutionFilePath.Contains("Copyright_") && Request.AppRelativeCurrentExecutionFilePath.Contains(".jpg"))
        {
            int ADFID = 0;
            string[] ImageNameArray = Request.AppRelativeCurrentExecutionFilePath.Split(new char[] { '_', '.' });
            if (int.TryParse(ImageNameArray[1], out ADFID))
            {
                QueriesTableAdapter SaveView = new QueriesTableAdapter();
                SaveView.FirstQuote_Operations_ClientLeadEmailViews_Save(ADFID);
            }
            HttpContext.Current.RewritePath("~/images/Copyright.jpg");
        }
    }

任何帮助都将不胜感激,谢谢。

图像重定向和日志记录

以下是我如何做到这一点的。image src="website/this virtual directory/Copyright_12345.jpg"12345是我们收集的值,我们在我们的网站上用一个真正的jpg回应

web.config

<httpHandlers>
    <remove verb="*" path="*.jpg"/>
    <add verb="*" path="*.jpg" type="Tracker.TrackerClass" validate="false"/>
</httpHandlers>

跟踪器类

    public class TrackerClass : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        int ADFID = 0;
        string[] ImageNameArray = context.Request.AppRelativeCurrentExecutionFilePath.Split(new char[] { '_', '.' });
        if (int.TryParse(ImageNameArray[1], out ADFID))
        {
            **store to database***
        }
        context.Response.ContentType = "image/jpg";
        context.Response.WriteFile("images/Copyright.jpg");
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

这是网站上唯一的课程。在IIS中创建一个虚拟目录以使其生效
创建后,获得属性、虚拟目录、配置、映射。在"应用程序扩展"下,点击"添加"。输入.jgp,即您的.NET版本isapii(从窗口中的大多数其他扩展中复制它),并将Verb设置为All。确保取消检查底部的验证文件。

这样就可以了。

这似乎是一种奇怪的做事方式。。。。我建议使用ASP.NET MVC,因为它在路由方面有很好的灵活性。。。。检查每一个请求似乎不是很好。

您是否尝试过创建一个处理程序页面并将其视为jpg?您能够在查询字符串中传递任何信息吗?

 public void ProcessRequest (HttpContext context) 
 {
    if (context.Request.QueryString["copyright"] == "y")
    {     
        context.Response.ContentType = "image/jpg";
        context.Response.WriteFile("~/Flower1.jpg");
    }
 }