Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Вопрос по HttpHandler'ам


Автор: priest08 28.7.2010, 09:37
Объявляю хендлер в конфиге:
Код

<httpHandlers>
                        .....
            <add verb="GET,POST,HEAD" path="PingService.ashx" type="MoneyProcessing.Web.Processing.PingService, MoneyProcessing.Web"/>
                        .....
</httpHandlers>

Описываю его:
Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Net;

namespace MoneyProcessing.Web.Processing
{

    using MoneyProcessing.DataAccess.Data;
    using MoneyProcessing.DataAccess;
    using MoneyProcessing.Crypto;

    public class PingService : IHttpHandler
    {
        bool IHttpHandler.IsReusable
        {
            get { return false; }
        }

        void IHttpHandler.ProcessRequest(HttpContext context)
        {
            HttpContext Context = HttpContext.Current;
            try
            {
                //Делаю всякое разное.
            }
            catch (Exception e)
            {
                context.Response.Clear();
                context.Response.Write("Error: " + e.Message);
            }

            context.Response.End();
        }
    }
}

Т.е. свойство IsReusable возвращает false. Правильно ли я понимаю. Как только я запущу этот хендлер, он отработает свой метод ProcessRequest и все. Больше он ни разу запускаться не будет? Чтобы я ни делал (какие бы запросы и куда бы ни слал) и сколько бы времени не прошло..?
Второй вопрос: если я остановлю iis и заново запущу его, то я смогу опять один раз вызвать хендлер? Если я поменяю файлики сервера тупо в виртуальном каталоге, то после создания нового домена и переносе приложения туда ASP.NET'ом, я опять этот хэндлер смогу один раз запустить?

Автор: Gleb 2.8.2010, 20:47
Цитата(priest08 @  28.7.2010,  12:37 Найти цитируемый пост)
Правильно ли я понимаю.

Нет, не правильно.
Свойство IsReusable указывает на то, может ли экземпляр данного класса использоваться повторно для других запросов. При IsReusable=false каждый раз будет создаваться новый экземпляр.

На практике если у вашего обработчика есть поля или свойства, то нужно использовать IsReusable=false.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)