Перенаправление и регистрация изображений - PullRequest
0 голосов
/ 27 марта 2012

Мы создаем запрос изображения с уникальным именем (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");
        }
    }

Любая помощь будет высоко ценится, спасибо.

Ответы [ 3 ]

1 голос
/ 14 декабря 2012

Вот как я это сделал.Изображение 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 (скопируйте ее из любого другого расширения в окне) и установите для глагола значение All.УБЕДИТЕСЬ, ЧТОБЫ ОТКЛЮЧИТЬ ПРОВЕРКУ ФАЙЛА внизу.

Это должно сделать это.

0 голосов
/ 27 марта 2012

Вы пробовали создать страницу обработчика и обработать ее как jpg?Вы можете передать какую-либо информацию в строке запроса?

 public void ProcessRequest (HttpContext context) 
 {
    if (context.Request.QueryString["copyright"] == "y")
    {     
        context.Response.ContentType = "image/jpg";
        context.Response.WriteFile("~/Flower1.jpg");
    }
 } 
0 голосов
/ 27 марта 2012

это кажется странным способом ... Я бы посоветовал использовать ASP.NET MVC, поскольку он обладает хорошей гибкостью в отношении маршрутизации .... проверка каждого отдельного запроса не кажется очень хорошей.

...