Мой проект ASP.NET MVC 3 замедляется до минимума после добавления библиотеки обнаружения мобильных устройств 51Degrees. Файл журнала 51Degrees, определенный <log logFile="~/bin/App_Data/51Log.txt" logLevel="Info" />
в разделе <fiftyOne>
, показывает, что библиотека устройств перезагружается для каждого запроса, добавляя 2-3-секундную задержку для каждого запроса:
2011-10-22T14:17:34.9863774Z - 8436 - Info - Loaded 14691 devices using 11640 strings in 1882ms
2011-10-22T14:17:50.8442844Z - 8436 - Info - Loaded 14691 devices using 11640 strings in 1820ms
2011-10-22T14:17:57.2756523Z - 8436 - Info - Loaded 14691 devices using 11640 strings in 1928ms
2011-10-22T14:18:01.0488681Z - 8436 - Info - Loaded 14691 devices using 11640 strings in 1886ms
2011-10-22T14:18:04.6790757Z - 8436 - Info - Loaded 14691 devices using 11640 strings in 1862ms
Кроме того, установка <fiftyOne>
<log ... logLevel="Debug">
в web.config вызывает следующее исключение при запуске:
Storage scopes cannot be created when _AppStart is executing.
Обновление MVC 4
Все работает отлично, если я создаю пустое приложение ASP.NET MVC 4 и добавляю последний пакет NuGet 51Degrees 2.0.3.2. Как и ожидалось, в журнале указано, что двоичные данные загружаются только один раз, несмотря на многочисленные запросы (51Degrees.mobi-Lite-2012.01.05.dat).
Осторожно оптимистично, я скопировал весь свой основной код проекта MVC 3 в новый проект ASP.NET MVC 4 и повторно добавил последний пакет 51Degrees, но проблема повторяется. Должна быть несовместимость с одним из моих пакетов или странная настройка.
Лог показывает, что библиотека перезагружается для каждого запроса:
2012-01-18T11:50:02.5026920Z - 11928 - Info - Creating provider from binary data file '~\App_Data\51Degrees.mobi-Lite-2012.01.05.dat'.
2012-01-18T11:50:02.8137098Z - 11928 - Info - Created provider from binary data file '~\App_Data\51Degrees.mobi-Lite-2012.01.05.dat'.
2012-01-18T11:50:07.7419917Z - 11928 - Info - Creating provider from binary data file '~\App_Data\51Degrees.mobi-Lite-2012.01.05.dat'.
2012-01-18T11:50:08.0170074Z - 11928 - Info - Created provider from binary data file '~\App_Data\51Degrees.mobi-Lite-2012.01.05.dat'.
2012-01-18T11:50:10.4191448Z - 11928 - Info - Creating provider from binary data file '~\App_Data\51Degrees.mobi-Lite-2012.01.05.dat'.
2012-01-18T11:50:10.7251623Z - 11928 - Info - Created provider from binary data file '~\App_Data\51Degrees.mobi-Lite-2012.01.05.dat'.
Задержка намного меньше, чем у файла данных XML (300 мс против 3000 мс), но все же вызывает заметную задержку.
Файлы 51Degrees.mobi.config двух проектов идентичны, и в моем файле web.config это модуль, который я загрузил:
<modules>
<remove name="Detector"/>
<add name="Detector" type="FiftyOne.Foundation.Mobile.Detection.DetectorModule, FiftyOne.Foundation"/>
</modules>
Что может быть причиной перезагрузки библиотеки 51Degrees при каждом запросе?