powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не вызывается HttpHandler
6 сообщений из 6, страница 1 из 1
Не вызывается HttpHandler
    #37605596
boyarincev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Visual Studia 2010 MVC 2 приложение
Делаю первое приложение. Задача - отобразить картинку из базы данных, для этого решил использовать HttpHandler

код Хендлера:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TravelInsurance2.Models;

namespace TravelInsurance2.HTTPHandler
{
    public class PictureHandler :IHttpHandler
    {

        bool IHttpHandler.IsReusable
        {
            get { return true; }
        }

        void IHttpHandler.ProcessRequest(HttpContext context)
        {
            HttpRequest Request = context.Request;
            HttpResponse Response = context.Response;

            int Id = Int32.Parse(Request.Params["id"]);

            TravelInsurance2DbEntities4 entities = new TravelInsurance2DbEntities4();

            var imageData = (from item in entities.Countrys.ToList() where item.CountryId == Id select item.Flag).FirstOrDefault();

            if (imageData != null)
            {
            Response.ContentType = "image/jpeg";

            Response.OutputStream.Write(imageData, 0, imageData.Length);
            Response.End();
            return;
            }

            context.Response.StatusCode = 404;
        }
    }
}



Зарегистрировал в webconfig находящемся в папке Views:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
	  
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
		<add name="PictureHandler" verb="*" path="photo.aspx" type="TravelInsurance2.HTTPHandler.PictureHandler, TravelInsurance2" resourceType="Unspecified"/>
    </handlers>
  </system.webServer>



При переходе по адресу вида:
localhost:63464/photo.aspx?id=7

Получаю ошибку:
авторОшибка сервера в приложении '/'.

Не удалось найти данный ресурс.

Описание: HTTP 404. Возможно, искомый ресурс (или один из зависимых от него компонентов) удален, получил другое имя или временно недоступен. Просмотрите следующий URL-адрес и проверьте, что он введен правильно.

Запрошенный URL: /photo.aspx

Информация о версии: Платформа Microsoft .NET Framework, версия:4.0.30319; ASP.NET, версия:4.0.30319.237

При этом код хендлера вообще не вызывается при переходе по данному адресу, из этого делаю вывод что подключаю я его не правильно и страницы содержащие "photo.aspx" не передаются на обработку ему.

Пробовал его регистрировать в разных местах, регистрировал в блоке "httphandlers":
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
  <system.web>
    <httpHandlers>
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
	  <add verb="*" path="photo.aspx" type="TravelInsurance2.HTTPHandler.PictureHandler, TravelInsurance2"/>
    </httpHandlers>

    <!--
        Включение проверки запросов на страницах представления вызовет проверку, происходящую
        после того, как ввод был уже обработан контроллером. По умолчанию
        MVC выполняет проверку запросов перед обработкой ввода контроллером.
        Чтобы изменить такое поведение, примените ValidateInputAttribute к
        контроллеру или действию.
    -->
    <pages
        validateRequest="false"
        pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <controls>
        <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
      </controls>
    </pages>
  </system.web>



Регистрировал в другом webconfige (в тех же секциях), который в корне проекта. Результат точно такой же. В чем проблема разобраться не могу.
Поиском пользовался, похожие темы есть, но там в основном проблема возникала при переносе с локального компьютера на сервер (у меня не работает на локальном компьютере), и если был создан веб-сайт - у меня веб-приложение.
Буду благодарен за помощь.
...
Рейтинг: 0 / 0
Не вызывается HttpHandler
    #37606283
VitaliyBoris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boyarincev,

А можно поинтересоваться, зачем в MVC Вы решили использовать хендлер?
...
Рейтинг: 0 / 0
Не вызывается HttpHandler
    #37606302
VitaliyBoris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boyarincev,

У меня есть ощущение что так будет немного проще:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
[HttpGet]
public ActionResult PhotoThumb(int id)
{
     TravelInsurance2DbEntities4 entities = new TravelInsurance2DbEntities4();

     var imageData = (from item in entities.Countrys.ToList() where item.CountryId == Id select item.Flag).FirstOrDefault();

     return new FileContentResult(imageData, "image/jpeg");
}
...
Рейтинг: 0 / 0
Не вызывается HttpHandler
    #37606308
boyarincev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitaliyBoris,

Это единственный способ вывода изображения хранящегося в базе данных, который я нашел (ну за исключением способа где сначала изображение сохраняется в файловую систему - но это мне кажется глупым), есть какие-то другие способы?
...
Рейтинг: 0 / 0
Не вызывается HttpHandler
    #37606311
boyarincev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VitaliyBoris,

Да вы абсолютно правы, так гораздо проще, спасибо :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не вызывается HttpHandler
    #38429419
mnsasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй положить хэндлер в корень сайта.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не вызывается HttpHandler
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]