首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >51每个请求的重新加载都会使ASP.NET MVC慢到爬行。

51每个请求的重新加载都会使ASP.NET MVC慢到爬行。
EN

Stack Overflow用户
提问于 2011-10-22 14:29:29
回答 2查看 1.3K关注 0票数 7

我的ASP.NET MVC 3项目在添加51 51Degrees移动检测库后会减慢速度。<log logFile="~/bin/App_Data/51Log.txt" logLevel="Info" /><fiftyOne>部分中定义的51 51Degrees日志文件显示,每个请求都重新加载了设备库,为每个请求添加了2-3秒的延迟:

代码语言:javascript
复制
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会在start引发以下异常:

代码语言:javascript
复制
Storage scopes cannot be created when _AppStart is executing.

MVC 4更新

如果我创建一个空白的ASP.NET MVC 4应用程序并添加最新的51Degrees2.0.3.2 NuGet包,一切都会非常完美。正如预期的那样,日志反映了尽管有多个请求(51Degrees.mobi-Lite-2012.01.05.dat),二进制数据只能加载一次。

谨慎乐观,我将我的主要MVC 3项目代码复制到一个新的ASP.NET MVC 4项目中,并重新添加了最新的51 51Degrees包,但问题仍然存在。一定是和我的一个软件包不兼容,或者是一个奇怪的设置。

日志显示正在为每个请求重新加载库:

代码语言:javascript
复制
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 vs对3000 vs),但它仍然造成了明显的延迟。

这两个项目的51Degrees.mobi.config文件是相同的,在我的web.config中,这是我加载的模块:

代码语言:javascript
复制
<modules>
    <remove name="Detector"/>
    <add name="Detector" type="FiftyOne.Foundation.Mobile.Detection.DetectorModule, FiftyOne.Foundation"/>
</modules>

是什么原因导致51 51Degrees库对每个请求重新加载?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-25 09:39:13

这是因为日志文件被放置在bin文件夹中。每当bin文件夹中发生任何更改时,辅助进程都将重新启动。将日志文件移动到~/App_Data文件夹,您将发现问题将得到解决。感谢您使用51Degrees.mobi

票数 7
EN

Stack Overflow用户

发布于 2011-11-28 21:00:24

我从CodePlex抓取了CodePlex演示应用程序。我使用和IIS运行它,并且没有显示库将每个请求的所有设备重新加载到ASP.NET服务器的问题。

此外,演示项目没有包括BrowserCapabilitiesProvider在Application_Start中的修改(但是,即使在我添加它时,它仍然有效)。

此时,假设您使用的是开放源码版本,我建议获取基础程序集的源代码,并从

\Foundation\Mobile\Detection\Wurfl\Provider.cs (可能在InitWurflFiles方法中)。

也许调用堆栈中会有一些东西可以帮助您更好地理解正在发生的事情。

或者,将演示项目的配置与您的web应用程序进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7860241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档