【发布时间】:2015-07-21 08:52:29
【问题描述】:
我正在开发一个存在性能问题的 Web 应用程序。我正在尽我所能。我做了很多改变,这也提高了我的表现。我有一个问题:
-
我可以将我所有的 AppSettings 值保存在 Application_Start 事件内的 Global.asax 文件中吗?下面是我的 Global.asax 文件代码:
void Application_Start(object sender, EventArgs e) { // Code that runs on application startup // Setting all the common application level variables. Application["ConnectionString"] = ConfigurationManager.ConnectionStrings["UtilityServiceMISConstr"].ConnectionString; Application["SendErrorMail"] = ConfigurationManager.AppSettings["SendErrorMail"]; Application["SendErrorMailTo"] = ConfigurationManager.AppSettings["SendErrorMailTo"]; Application["LOGINURL"] = ConfigurationManager.AppSettings["LOGINURL"]; Application["ExpirePasswordDays"] = ConfigurationManager.AppSettings["ExpirePasswordDays"]; Application["FromMailID"] = ConfigurationManager.AppSettings["FromMailID"]; Application["BCCMailID"] = ConfigurationManager.AppSettings["BCCMailID"]; Application["CCMailID"] = ConfigurationManager.AppSettings["CCMailID"]; Application["IsSPLogging"] = ConfigurationManager.AppSettings["IsSPLogging"]; Application["DefaultReminderCount"] = ConfigurationManager.AppSettings["DefaultReminderCount"]; Application["PageSize"] = ConfigurationManager.AppSettings["PageSize"]; Application["SendSettlementMail"] = ConfigurationManager.AppSettings["SendSettlementMail"]; Application["SendSettlementMailTo"] = ConfigurationManager.AppSettings["SendSettlementMailTo"]; Application["Settlement"] = ConfigurationManager.AppSettings["Settlement"]; Application["AllowedLoginAttempts"] = ConfigurationManager.AppSettings["AllowedLoginAttempts"]; } void Application_End(object sender, EventArgs e) { // Code that runs on application shutdown } void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs } void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started } void Session_End(object sender, EventArgs e) { // Code that runs when a session ends. // Note: The Session_End event is raised only when the sessionstate mode // is set to InProc in the Web.config file. If session mode is set to StateServer // or SQLServer, the event is not raised. }
这是一个好习惯吗?如果不是,那么存储连接字符串的最佳方式是什么?
【问题讨论】:
-
是什么让你认为读取配置信息是当前的性能瓶颈?
-
最近去面试了。有人问我一个问题,即存储连接字符串而不是一次又一次地读取 web.config 文件的最佳方法是什么..?所以我想将我的连接字符串存储在 Application_Start 事件中。
-
但是您没有将连接字符串存储在
Application_Start中,而是从那里读取它并且连接字符串仍在您的app.config -
那么存储连接字符串的最佳方式在哪里?
-
大多数初学者更喜欢猜测什么是慢而不是分析应用程序。这只会导致错误的解决方案。
标签: c# asp.net asp.net-mvc