2013-02-28 85 views
1

目前,我的应用程序在global.asax的Session_Start方法中执行API调用,该方法填充了一堆会话变量。问题是这使得应用程序首次加载需要10秒。ASP.NET MVC 4预加载器

我想在此期间放置某种“加载...”预加载器,但我不知道该如何去做或放在哪里。

+0

我强烈建议您避免在'Session_Start'中执行API调用。我们在说什么类型的API调用?它可以移动到别的地方吗? – MartinHN 2013-02-28 15:20:22

+0

我确信它可以,但我不知道在哪里。我对ASP.NET很新。我只需要能够从网站上的任何页面访问会话变量。 – Derek 2013-02-28 15:23:23

+0

调用本身只是填充'DataSet ds'。然后我做'DataTable dt = ds.Tables [0]'并使用foreach添加一堆会话变量。 – Derek 2013-02-28 15:43:28

回答

0

Session_Start在用户能够登录之前被触发,这是否有可能您正在提取的数据在应用程序范围内是相同的?如果是,请将您的代码移至Application_Start。如果不是,那么改变你的方法会很好。延迟加载 - 仅在需要时才提取fetchdata,或者使用缓存 - 如果可能的话。

+0

谢谢!为了存储我想在整个站点上保留的变量,我应该把它们放在'@Session [“VariableName”]'? – Derek 2013-02-28 21:13:44

+0

如果数据对于每个会话都是唯一且不同的,那么是否则否。为什么?没有必要将相同的数据复制到每个会话 - 无效。您可以尝试将Global.asax中的数据存储为Appliacation类的属性(public static MyObject MyProperty {get; set;})。 – 2013-02-28 23:27:12

+0

谢谢!这些数据对于每个会话都是唯一且不同的,因此我将继续使用会话变量。 – Derek 2013-03-01 22:11:14