asp.net 返回超时的解决方法
1.IIS->[网站]->属性-》连接超时。默认为120秒
2.WEB.CONFIG 手工添加httpRuntime,如
<system.web>
<httpRuntime maxRequestLength="1000000" executionTimeout="2000" />
</system.web>
3.同步执行WEBSERVICE时,需要设置TIMEOUT属性,如
CompilerSvr.MyFavoritesService compiler=new FDN.DMS.Controls.CompilerSvr.MyFavoritesService();
compiler.Timeout =2000000; //毫秒
错误处理封装
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
/** <summary>
/// Summary description for Error
/// </summary>
public class ErrorManager
{
private System.Timers.Timer m_timer;
private Hashtable m_htErr;
/** <summary>
/// 私有的构造函数
/// </summary>
private ErrorManager()
{
this.m_timer = new System.Timers.Timer();
this.m_timer.Enabled = false;
this.m_timer.Interval = 12 * 60 * 60 * 1000; //默认12个小时执行一次
this.m_timer.Elapsed += new System.Timers.ElapsedEventHandler(m_timer_Elapsed);
this.m_htErr = new Hashtable();
}
/** <summary>
/// 单例模式的接口
/// </summary>
public static readonly ErrorManager Instance = new ErrorManager();
/** <summary>
/// 设置定时器的频率,单位是毫秒
/// </summary>
/// <param name="Interval">毫秒</param>
public void SetTimerInterval(int Interval)
{
this.m_timer.Interval = Interval;
}
/** <summary>
/// 定时器开始
/// </summary>
public void TimerStart()
{
this.m_timer.Enabled = true;
}
/** <summary>
/// 定时器结束
/// </summary>
public void TimerStop()
{
this.m_timer.Enabled = false;
}
/** <summary>
/// 发生了一个错误,把错误信息保存起来,并返回错误的id,便于页面中读取
/// </summary>
/// <returns>返回错误的id</returns>
public string AddError()
{
string key = Guid.NewGuid().ToString();
string msg = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+ HttpContext.Current.Server.GetLastError().GetBaseException().Message;
this.m_htErr.Add(key, msg);
HttpContext.Current.Server.ClearError();
return key;
}
/** <summary>
/// 返回指定Key的错误信息,前19个字符是错误发生的时间
/// </summary>
/// <param name="key">key,是一个guid</param>
/// <returns>返回错误信息</returns>
public string GetError(string key)
{
return this.m_htErr[key].ToString();
}
/** <summary>
/// 定时在Hashtable中清理错误信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void m_timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
ArrayList list = new ArrayList();
lock (this.m_htErr)
{
DateTime now = DateTime.Now;
TimeSpan ts;
foreach (string key in this.m_htErr.Keys)
{
//前19个字符是错误发生的日期,yyyy-MM-dd HH:mm:ss
string time = this.m_htErr[key].ToString().Substring(0, 19);
ts = now - Convert.ToDateTime(time);
if (ts.TotalMinutes > 20) //把20分钟前的错误信息从hashtable中清除
list.Add(key);
}
foreach (string key in list)
{
this.m_htErr.Remove(key);
}
}
}
Session操作的封装#region Session操作的封装
/** <summary>
/// 取得指定键值的Session
/// </summary>
/// <param name="key">键值</param>
/// <returns>键内容值</returns>
public object GetSession(string key)
{
object val = HttpContext.Current.Session[key];
if (val == null)
throw new Exception("页面超时,请重新登录。");
return val;
}
/** <summary>
/// 设置Session
/// </summary>
/// <param name="key">键值</param>
/// <param name="val">键内容</param>
public void SetSession(string key, object val)
{
HttpContext.Current.Session[key] = val;
}
#endregion
}
ASP.NET 2.0编程小技巧两则
1、利用app_offline.htm
在asp.net 2.0中,如果你要COPY站点,进行站点维护,部署,和进行大量修改,有可能要停掉你的WEB应用程序了,而以一个友好的方式提示给用户,比如什么“本 网站正在更新”等等的信息,在ASP.NET 2.0中,你可以建立一个叫app_offline.htm(大小写没关系)的静态HTM页面文件,其中修改成你要临时显示的内容,将其放在你的应用的根 目录下。这样,任何外部的请求的话,都会马上被转移到该页面了。这个时候,你的网站依然可以被访问,只不过你的应用不能被访问了。呵呵,那样的话,就可以 避免很多更新网站是的麻烦事了。
当然,另一个方法,也可以在vs.net 2005的website菜单下的asp .net configuration管理工具中,使你的站点offline.
要注意的是,这个app_offline.htm页面的大小,要大于512字节,用asp.net 之父SCOTT的话来说,就是"
Make sure the app_offline.htm file is large enough (512 bytes) to disable the IE “friendly http errors” feature
2、利用MaintainScrollPositionOnPostback属性
考虑到一个很长的页面,如果每次POSTBACK之后,那个IE的滚动条可能都会回到最开始的地方(最上面),而不会保留其原先已经有的位置, 这样用户会比较麻烦,又要把滚动条移动到原来的地方,在asp.net 2.0中,可以设置MaintainScrollPositionOnPostback属性为TRUE即可,即
<%@ Page Language="VB" AutoEventWireup="false" MaintainScrollPositionOnPostback="true" CodeFile="MaintainScrollPosition.aspx.vb" Inherits="MaintainScrollPosition" %>
DataGrid的多行提交:
尽管ASP.NET DataGrid是众所周知非常好的表格控件,不过,提起DataGrid的编辑功能,我们却不敢恭维了,就拿DataGrid的数据提交功能来说,的确 存在很大的问题:在DataGrid中,每编辑一行就要提交一行,即所谓“单行编辑、单行提交”,这样的话,如果编辑的行数过多,不仅用户操作繁琐,还会 造成对服务器的频繁访问,极大降低系统效率。
当然了,有一种借尸还魂的解决方法,那就是把所要编辑的内容转到其他的页中在TextBox中进行编辑。不过,仔细想想,这种方法难道不是自己在骗 自己吗,还有在Grid中我们编辑的时候总不能老是用Tab键来实现Grid(TextBox)之间的跳转吧,如果响应回车事件,那么需要程序员浪费很大 的精力来开发。
如何解决上述问题呢?下面我向大家推荐一个我正在使用的国产DataGrid:SmartGrid(天空软件站可以下载:http://www.skycn.com/soft/23547.html ),这个控件我已经用了好长的时间了,现在来同大家探讨一下SmartGrid的多行提交的方法:SmartGrid并没有DataGrid中的那些按钮列而是整个的表单只有一个提交按钮,无论你更改了一行或者是多行都可以一次性的提交,下面来随便看点例子:
实例:
上图中是一个比较好的编辑的例子,例子显示,你可以编辑多行也可以编辑一行,然后一起进行提交。
代码:
修改按钮的代码:
private void btonSave_Click(object sender, System.EventArgs e)
{
this.DataGrid1.ReadOnly = false;//进入编辑
this.DataGrid1.AllowAdd = true;//允许添加
this.DataGrid1.AllowDelete = true;//允许删除
}
此段代码是smartgrid的独有的属性你可以设添加删除 编辑 的各种的功能
保存按钮的代码:
private void Button2_Click(object sender, System.EventArgs e)
{
DataTable t = (DataTable)this.SmartGrid1.DataSource;
this.sqlDataAdapter1.Update(t);
t.Clear();
this.sqlDataAdapter1.Fill(t);
this.SmartGrid1.DataSource = t;
}
这是整体的把数据提交到数据库中,这种做法适合大数据量的情况
还有一种是数据逐行的提交到服务器
代码:
private void btonSave_Click(object sender, System.EventArgs e)
{
DataTable tb=(DataTable)this.SmartGrid1.DataSource;
SqlParameter[] parameters=new SqlParameter[5];
foreach(DataRow dr in tb.Rows)
{
parameters[0]=new SqlParameter("@customerId",""+dr[1]+"");
parameters[1]=new SqlParameter("@companyName",""+dr[0]+"");
parameters[2]=new SqlParameter("@contactName",""+dr[2]+"");
parameters[3]=new SqlParameter("@contactTitle",""+dr[3]+"");
parameters[4]=new SqlParameter("@address",""+dr[4]+"");
//EamPd 是类Execute是执行存储过程的函数parameters是存储过程所需要的参数
EamPd.Execute("CreatLayer",parameters);
}
}
转载于:https://www.cnblogs.com/suchenge/articles/1502234.html
asp.net 返回超时的解决方法相关推荐
- php处理大量数据 超时,PHP进行批量任务处理不超时的解决方法
本文实例分析了PHP进行批量任务处理不超时的解决方法.分享给大家供大家参考,具体如下: PHP批量任务处理 PHP在批量处理任务的时候会超时,其实解决方法很简单了,就是把任务分割,一次处理一部分,任务 ...
- ASP+Access中文乱码的解决方法,ASP中文乱码,asp乱码问题
确保编码声明正确(例:时尚淘女之家http://www.tao36524.com) 如果您使用的是国外空间,默认是西欧而不是GB2312,你可以通过强制为GD2312的方式! 在数据提取页面的第一行代 ...
- ios7自定义返回按钮后,右滑返回功能失效解决方法
ios7自定义返回按钮后,右滑返回功能失效解决方法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开 ...
- php unserialize 返回false的解决方法
php unserialize 返回false的解决方法 php 提供serialize(序列化) 与unserialize(反序列化)方法. 使用serialize序列化后.再使用unseriali ...
- [datatable]关于在DataTable中执行DataTable.Select(“条件“)返回DataTable的解决方法
[datatable]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 参考文章: (1)[datatable]关于在Da ...
- “git push”后返回“Error 403”解决方法
"git push"后返回"Error 403"解决方法 参考文章: (1)"git push"后返回"Error 403&quo ...
- 接口返回[object,Object]解决方法
接口返回[object,Object]解决方法 参考文章: (1)接口返回[object,Object]解决方法 (2)https://www.cnblogs.com/kaiqinzhang/p/10 ...
- asp.net无法调试的解决方法(从安装配置步骤角度来看)
asp.net无法调试的解决方法 如果iis是后来安装的,需要首先.net在命令工具中执行ASPnet_regiis -i,安装ASP.netframework 然后检查下边的配置: 如果iis不是后 ...
- 计算机网络ping超时,ping请求超时怎么回事?ping请求超时的解决方法
电脑使用远程或者共享对方数据库的时候,会ping一下对方电脑.ping是系统自带的功能,一般用于检测网络连接是否正常,有时候会出现ping请求超时的情况,造成无法上网,如何解决?接下来,小编给大家整理 ...
最新文章
- ps怎么把一个颜色替换成另一个颜色_图标设计,用PS制作一款小清新的拟物时钟...
- 新晋 ACM Fellow 陶大程,8 篇 NeurIPS 论文详解
- html 监听input输入框的值,利用原生JS实时监听input框输入值
- reactjs 全局状态管理:redux的组成
- CORS 跨域-哪些操作不受同源限制
- RIA and volta
- jdk中ArrayList的实现
- 文件操作:fseek函数和ftell函数
- OpenGL--纹理贴图基础
- Eviews(8)进行线性回归(ols一元)与格兰杰(Granger)因果关系检验操作步骤
- 同比和环比的计算方式
- 基于SSM架构的网上书城系统
- 刷题-洛谷-P1179 数字统计
- Qt的基本控件——列表控件
- 设计模式-原型模式C++
- JS和node.js的区别
- 使用层次聚类的有组织点云的快速平面提取(续)
- hadoop 四种压缩格式
- 电脑突然断电蓝屏导致Git错误的一种解决办法
- 为了边看美剧边学英语,我写了个字幕处理脚本
热门文章
- 电脑上同时安装了tensorflow和tensorflow-gpu,如何默认使用tensorflow-gpu
- 概率论-2.2 随机变量的数学期望(重点:随机变量X的期望)
- TCP传输-出现差错的解决办法
- [Jarvis OJ - PWN]——[XMAN]level3_x64
- 回溯法——N皇后问题
- swift 原生给h5发消息_Swift-WKWebView与JavaScript的细节,H5页面跳转原生界面
- Message-Digest Algorithm 5
- 解决执行 df -h 卡住,yum和rpm都无法安装软件问题
- hihocoder1398 网络流五之最大权闭合子图
- Oracle-计算岁数