好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

项目从.net 2.0 升级到。.net 4.0项目以后发现网站运行十分缓慢

项目从.net 2.0 升级到。.net 4.0项目以后发现网站运行十分缓慢


大家好,我们团队现在用开发环境是vs2010 .net 2.o framework asp.net, 昨天项目从.net 2.0 升级到。.net 4.0项目以后发现网站运行十分缓慢,页面95%的页面都无打开,即使打开首页也需要好几分钟,经过我们排查只有,发现移除一个附加httpmodel 以后项目就正常运行了,但是我们必须要次httpmodel 功能才正常,否则有部分功能无法使用,通过对应用程序的监控发现在这个httpModel 中有一个事件运行时间超过2~4分钟,请大家帮我分析一下具体产生的原因,请大家不吝指教

------------------------------------------------------------------------------

 public class UrlAppendParams : System.Web.IHttpModule

    {

        private long refId = 0;

        private string authCode = string.Empty;

 

        public void Init(HttpApplication application)

        {

            application.PostMapRequestHandler += new EventHandler(Application_PostMapRequestHandler);

            application.AcquireRequestState += new EventHandler(Application_AcquireRequestState);

            application.PostAcquireRequestState += new EventHandler(Application_PostAcquireRequestState);

            application.PostRequestHandlerExecute += new EventHandler(Application_ApplyUrlFilter);

            HttpContext.Current.Trace.Write(MethodInfo.GetCurrentMethod().Name, DateTime.Now.ToLongTimeString());

        }  

          具体出问题的事件方法就是此方法,在asp.net 2.0 的运行环境下正常,在asp.net 4.0 的运行环境运行时时间超过4分钟。

          private void  Application_PostMapRequestHandler (object source, EventArgs e)

        {

            HttpContext.Current.Trace.Write(MethodInfo.GetCurrentMethod().Name, DateTime.Now.ToLongTimeString());

            HttpApplication application = (HttpApplication)source;

 

            if (application.Context.Handler is IReadOnlySessionState || application.Context.Handler is IRequiresSessionState)

            {

                // no need to replace the current handler 

                return;

            }

 

            // swap the current handler 

            application.Context.Handler = new  UrlParamsFilterHttpHandler (application.Context.Handler);

        }  

        。。。。。。。。。。

   public class  UrlParamsFilterHttpHandler  : IHttpHandler, IRequiresSessionState

    {

        internal readonly IHttpHandler OriginalHandler;

 

        public UrlParamsFilterHttpHandler()

        {

            OriginalHandler = HttpContext.Current.Handler;

            HttpContext.Current.Trace.Write(MethodInfo.GetCurrentMethod().Name, DateTime.Now.ToLongTimeString());

        }

 

        public UrlParamsFilterHttpHandler(IHttpHandler originalHandler)

        {

            OriginalHandler = originalHandler;

            HttpContext.Current.Trace.Write(MethodInfo.GetCurrentMethod().Name, DateTime.Now.ToLongTimeString());

        }

 

        public void ProcessRequest(HttpContext context)

        {

            HttpContext.Current.Trace.Write(MethodInfo.GetCurrentMethod().Name, DateTime.Now.ToLongTimeString());

            //// do not worry, ProcessRequest() will not be called, but let's be safe 

            //throw new InvalidOperationException("MyHttpHandler cannot process requests.");

        }

 

        public bool IsReusable

        {

            // IsReusable must be set to false since class has a member! 

            get { return false; }

        }

    }

是否是2.0 和4.0 有很大的区别吗?asp.net 生命周期应该是一样的啊,如果这个有问题的话,还有没有其他方法可以替代解决此问题呢。请大家多多指教。 

评论 #1楼   2012-02-27 12:15   Ivony...        

MethodInfo.GetCurrentMethod().Name
把这个换成一个字符串常量。    回复   引用   查看    

#2楼 [ 楼主 ]  2012-02-27 12:28   AndyYu        

多谢。这个只是为了监控临时添加,对程序影响可以忽略    回复   引用   查看    

#3楼   2012-02-27 12:56   jason-lee        

要新建一个应用程序池,不要跟.NET2.0 程序共用一个池。这样很慢的。    回复   引用   查看    

#4楼 [ 楼主 ]  2012-02-27 13:11   AndyYu        

@ jason-lee
谢谢,已经为项目建立单独新的应用程序池了。    回复   引用   查看    

#5楼   2012-02-27 13:53   dudu        

参考文章: Did you know? – ASP. NET’s performance problems caused by the Session
相关博问: http://q.cnblogs.com/q/32311/    回复   引用   查看    

#6楼   2012-02-27 17:24   水牛刀刀        

我在博问回答你这个问题了,你试试,应该可以的。    回复   引用   查看    

 

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于项目从.net 2.0 升级到。.net 4.0项目以后发现网站运行十分缓慢的详细内容...

  阅读:44次