Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не вызывается HttpHandler / 6 сообщений из 6, страница 1 из 1
08.01.2012, 14:34
    #37605596
boyarincev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не вызывается HttpHandler
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
09.01.2012, 11:03
    #37606283
VitaliyBoris
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не вызывается HttpHandler
boyarincev,

А можно поинтересоваться, зачем в MVC Вы решили использовать хендлер?
...
Рейтинг: 0 / 0
09.01.2012, 11:18
    #37606302
VitaliyBoris
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не вызывается HttpHandler
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
09.01.2012, 11:22
    #37606308
boyarincev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не вызывается HttpHandler
VitaliyBoris,

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

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


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