У нас есть отчет, который сгенерирован и вручен в режиме реального времени, когда пользователь нажимает на ссылку.
Конечно, после того, как мы идем живые, мы обнаружили, что у некоторых пользователей есть достаточно данных для порождения отчета работать достаточно медленно, что существует тайм-аут.
Долгосрочная перспектива, мы решим это, просто создав страницу, которая ищет завершенный отчет периодически и загружает его, когда это готово. Но на данный момент, если бы это возможно, мы хотели бы, чтобы быстрое исправление решило непосредственную проблему.
Существует ли способ расширить период тайм-аута для единственной подаваемой веб-страницы?
Я нашел это, которое, казалось, указало, что был вид возможных (но который походит на очень плохую идею, потому что это изменяет весь веб-сайт на время веб-вызова, и хуже, кажется, что это могло бы иметь проблемы с несколькими синхронизация хита также, возможно оставляя более долгий тайм-аут на для всего сайта),
Я также нашел это локально, но это не заканчивало тем, что ответило на вопрос (хотя это действительно предлагало долгосрочное решение, к которому мы будем перемещаться.)
Нет ничего, чтобы уменьшить многословность (кроме того, что говорит вереск).
Но хорошая статья о самой проблеме: Template Typedef .
Вам действительно понадобится этот трюк, если у вас есть какая-то родовая функция, которая ожидает, что ваш тип будет иметь какой-то связанный typedef, и ваш тип будет шаблонным (учтите, что вы предоставили result_t и это должен быть ваш параметр шаблона!).
-121--4716331-Можно использовать внутренний тип:
template <typename U>
struct sptr {
typedef tr1::shared_ptr<U> t;
};
Затем введите sptr < U >:: t
или, к сожалению, часто typename sptr < U >:: t
.
C++ 0x имеет шаблонные типы, можно проверить, можно ли убедить компилятор принять их:
template<typename U>
using sptr = tr1::shared_ptr<U>;
Тогда скажи sptr < U >
И конечно всегда есть # define sptr::tr1::shared_ptr
, например, если вы ожидаете C++ 0x в будущем и хотите преодолеть разрыв. Или если вы используете его в достаточно узком контексте, то макрос не страшен.
Если страница находится в собственном каталоге (или может быть перемещена в него), можно поместить файл web.config в этот каталог с помощью параметра execityTimeout или любых других параметров настройки, которые требуется расширить. То есть
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!-- allow for intensive calculations in reports -->
<httpRuntime executionTimeout="6000" />
</system.web>
</configuration>
В соответствии с одним из комментаторов на первой ссылке , которую вы предоставили , установка Server.StartTimeout = 3600;
не является глобальным изменением, поэтому вы также можете пересмотреть этот параметр.
Джеральд написал re: Timeout of an ASP.NET стр.
на ср., 29 ноября 2006 года 15:38
I решил проверить действительность этого написанием тестовой программы, содержащей две страницы. На одной из страниц я установка для свойства StartTimeout значения 3000, в то время как на другой странице значение свойства не изменяется. Оказывается, что после загрузки первая страница, затем вторая страница, значение, определяющее тайм-аут в второй странице возвращено значение по умолчанию значение (90 секунд для освобождения, 30000000 для отладки) или набор значений в файлах конфигурации. В заключение, Тайм-аут ПО свойство, при изменении на одной странице, не изменяется на глобальном уровне.