一组 asp.net Application 相关的问题

1 空闲20分钟后自动停止的问题

最近做一个收发短信息的webservice, 收发短信之前需要先和远程的sp服务建立连接, 于是在    void Application_Start(object sender, EventArgs e) 中与远程sp服务建立连接,在void Application_End(object sender, EventArgs e)中断开连接,同时加入了连接及断开连接的日志信息,运行过程中, 发现当网站空闲20分钟以后,就会Application_End,下次访问webservice的时候再Application_Start,很是麻烦, 查了些资料,发现是因为"应用程序池"搞的, 每个web application部署在iis上以后都会自动应用缺省的应用程序池DefaultAppPool,查看这个池的属性可以看到默认设置空闲20分钟关闭工作进程,为了不影响其他的web程序,在iis里新建一个应用程序池, 将空闲时间设置为120分钟或更长,也可以关闭这个选项, 根据需要定吧, 然后设置自己的web service使用这个新建的池.这样就不会出现空闲20分钟后Application_End的现象了.

2 强制停止Application

System.Web.HttpRuntime.UnloadAppDomain(); 

3 记录Application结束的原因

    void Application_End(object sender, EventArgs e)
    {
        //  Code that runs on application shutdown
        // 记录重起的原因
        HttpRuntime runtime = (HttpRuntime)typeof(System.Web.HttpRuntime).InvokeMember("_theRuntime",
                                                                                            BindingFlags.NonPublic
                                                                                            | BindingFlags.Static
                                                                                            | BindingFlags.GetField,
                                                                                            null,
                                                                                            null,
                                                                                            null);

        if (runtime == null)
            return;
        string shutDownMessage = (string)runtime.GetType().InvokeMember("_shutDownMessage",
                                                                         BindingFlags.NonPublic
                                                                         | BindingFlags.Instance
                                                                         | BindingFlags.GetField,
                                                                         null,
                                                                         runtime,
                                                                         null);

        string shutDownStack = (string)runtime.GetType().InvokeMember("_shutDownStack",
                                                                       BindingFlags.NonPublic
                                                                       | BindingFlags.Instance
                                                                       | BindingFlags.GetField,
                                                                       null,
                                                                       runtime,
                                                                       null);

        if (!EventLog.SourceExists(".NET Runtime"))
        {
            EventLog.CreateEventSource(".NET Runtime", "Application");
        }
        EventLog log = new EventLog();
        log.Source = ".NET Runtime";
        log.WriteEntry(String.Format("/r/n/r/n_shutDownMessage={0}/r/n/r/n_shutDownStack={1}",
                                     shutDownMessage,
                                     shutDownStack),
                                     EventLogEntryType.Error);

       
    }

 4 Seven reason for application restart in Asp.net 2.0

Here is a list of events when the Asp.net application restarts in Asp.Net 2.0

Adding, modifying, or deleting assemblies from the application's Bin folder.

Adding, modifying, or deleting localization resources from the App_GlobalResources or App_LocalResources folders.
Adding, modifying, or deleting the application's Global.asax file.
Adding, modifying, or deleting source code files in the App_Code directory.
Adding, modifying, or deleting Profile configuration.
Adding, modifying, or deleting Web service references in the App_WebReferences directory.
Adding, modifying, or deleting the application's Web.config file.
 这些原因通过上面的方法可以在系统日志里看到具体的原因.

 

参考文章:

http://www.vikramlakhotia.com/Seven_reason_for_application_restart_in_Aspnet_20.aspx

http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx

http://bluedragon.blog-city.com/why_might_a_net_web_application_app_domain_restart_the_reaso.htm

http://aspalliance.com/951_Application_Domains_in_NET

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一篇概论 第一章微软.NET战略和ASP.NET 简介 i. 微软.NET 的历史 ii. ASP.NET历史 iii. 众说纷纭.NET iv. ASP.NET综述 v. 小结 第二章我的第一个ASP.NET程序 i. 配置开发环境 ii. 运行配套光盘 iii. 第一个例子 iv. 近观ASP.NET v. 小结 第三章ASP.NET 和ASP的比较 i. ASP和ASP.NET 的对比 ii. 从 ASP到ASP.NET(一个移植的例子) iii. 如何移植ASP到ASP.NET iv. 小结 第二篇Web Form 第一章Web Form简介 i. Page 简介 ii. 我的第一个Page iii. 使用Server Control iv. 使用HTML Server Control v. Web Form事件模型 vi. 小结 第二章服务器端控件 i. 文本输入控件 ii. 选择控件 iii. 列表控件 iv. 小结 第三章自定义控件 i. 小页面控件 ii. 代码和模板的分离 iii. 自定义控件 1. 组合控件 2. 继承控件 iv. 小结 第三篇ADO.NET数据库编程 第一章ADO.NET简介 i. ADO.NET的发展历史 问数据库 i. 记录插入 ii. 记录修改 iii. 记录删除 第三章存储过程和触发器 i. 使用存储过程 1. 有返回值 2. 输入参数 3. 输出参数 ii. 使用触发器 iii. 小结 第四章内存中的数据库 i. 字段映射 ii. 数据表 iii. 表间关系 iv. 表间约束 v. DataSet和XML 第五章响应ADO.NET 的事件 i. DataSet Events ii. DataTable Events 第六章数据绑定 i. Repeater ii. DataList iii. DataGrid 第七章事务处理 i. ASP.NET事务处理机制 ii. 一个完整的例子 iii. 利用数据库的事务处理 iv. 利用MTS的事务处理 v. 小结 第四篇应用程序 第一章什么是应用程序 i. 配置应用程序的步骤 ii. 应用程序框架 iii. 创建应用程序的典型步骤 iv. 小结 第二章配置 Config.web 第三章编写 global.asa 第四章Application和Session 第五章安全访问控制 第五篇Web Service 第一章Web service 简介 第二章一个简单的Web Service案例 第三章数据交换 第四章存取站点对象 第六篇性能优化 第七篇高级应用 第一章XML及其应用 第二章三层结构及其应用 第三章使用 COM 第四章使用 MTS 第五章使用 MSMQ 第六章在 ASP中使用.NET

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值