vs2005中 Global.asax 没有 Global.asax.cs 问题解决
2009-08-06 11:17
211 查看
在使用VS
2005
的过程中发现了一个问题,就是原来在VS2003中很好用的全局变量文件Global.ascx改变了,只剩下一个页面,文件所有代码都是写在页面上的。
当我们发布Web程序的时候这个文件也没有被发布出
去,致使在Global中写的代码都没有被执行。最先开始用了一个临时的解决办法就是在发布之前把ascx文件剪切掉,发布以后再复制到这个文件到发布程
序的文件夹下(这个方法是利用了Framework
2.0的自动编译的机制)。但是这个方法有很多不足之处。首先是时长会忘掉把文件拷回去,写好的程序到客户那一看没法正常运行,调试很久才发现是没有
Global。其次是因为Global都写在页面上,很多方法都不能正常的使用,还不能引用命名空间进来方法实例化又有问题,总之就是问题一堆啦(也不刨
除本人学识浅薄不会用的可能,哈哈)。
经过无数次的磨难之后终于下定决心改造一下,上网搜啊搜看到很多朋友都遇到类似的问题,都没有好的解决办法,后来无意间发现一个英文的网址(具体地址不记得了-_-),一个老外解决了这个问题,喜出望外,马上试验了一下果然不错。现在把解决方法写在博客里面备忘。
首先在App_Code文件夹下创建一个类Global.cs把所有Global.asax文件里面的方法都复制过去。类使用partial修饰符(用来定义一个类或其它集合类可被拆分,并定义在多个类中)并且要继承System.Web.HttpApplication
写法如下:
/// <summary>
/// Global 的摘要说明
/// </summary>
public partial class Global : System.Web.HttpApplication
{
public Global()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
}
}
然后再修改一下Global.asax文件里面只要写上
<%@ Application Language
="C#" Inherits="Global" %>
把内容指向刚才写的Global.cs文件就可以了。现在在全局变量里面想写什么就写什么吧。
2005
的过程中发现了一个问题,就是原来在VS2003中很好用的全局变量文件Global.ascx改变了,只剩下一个页面,文件所有代码都是写在页面上的。
当我们发布Web程序的时候这个文件也没有被发布出
去,致使在Global中写的代码都没有被执行。最先开始用了一个临时的解决办法就是在发布之前把ascx文件剪切掉,发布以后再复制到这个文件到发布程
序的文件夹下(这个方法是利用了Framework
2.0的自动编译的机制)。但是这个方法有很多不足之处。首先是时长会忘掉把文件拷回去,写好的程序到客户那一看没法正常运行,调试很久才发现是没有
Global。其次是因为Global都写在页面上,很多方法都不能正常的使用,还不能引用命名空间进来方法实例化又有问题,总之就是问题一堆啦(也不刨
除本人学识浅薄不会用的可能,哈哈)。
经过无数次的磨难之后终于下定决心改造一下,上网搜啊搜看到很多朋友都遇到类似的问题,都没有好的解决办法,后来无意间发现一个英文的网址(具体地址不记得了-_-),一个老外解决了这个问题,喜出望外,马上试验了一下果然不错。现在把解决方法写在博客里面备忘。
首先在App_Code文件夹下创建一个类Global.cs把所有Global.asax文件里面的方法都复制过去。类使用partial修饰符(用来定义一个类或其它集合类可被拆分,并定义在多个类中)并且要继承System.Web.HttpApplication
写法如下:
/// <summary>
/// Global 的摘要说明
/// </summary>
public partial class Global : System.Web.HttpApplication
{
public Global()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
}
void Application_End(object sender, EventArgs e)
{
// 在应用程序关闭时运行的代码
}
void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
}
void Session_Start(object sender, EventArgs e)
{
// 在新会话启动时运行的代码
}
void Session_End(object sender, EventArgs e)
{
// 在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
// 或 SQLServer,则不会引发该事件。
}
}
然后再修改一下Global.asax文件里面只要写上
<%@ Application Language
="C#" Inherits="Global" %>
把内容指向刚才写的Global.cs文件就可以了。现在在全局变量里面想写什么就写什么吧。
相关文章推荐
- vs2005中 Global.asax 没有 Global.asax.cs 问题解决
- vs2005中 Global.asax 没有 Global.asax.cs 问题解决
- vs2005中 Global.asax 没有 Global.asax.cs 问题解决
- 解决vs2005下Global.asax缺少cs文件的使用不便
- 提示错误“没有可访问的表。请确保在 Global.asax 中注册了至少一个数据模型.. ”解决方法
- 解决Vs2005新建网站没有ASP.NET的问题
- 如何解决VS2005没有代码智能提示的问题
- IIS7部署后Global.asax不执行问题的解决
- 如何解决VS2005没有代码智能提示的问题
- IDE-----VS2005运行过程中"没有找到MFC80UD.DLL,因此这个程序未能启动.重新安装应用程序可能会修复此问题"? 的解决
- 解决VS2005编译的MFC在没有安装VS2005的机器上不能运行的问题
- 如何解决VS2005没有代码智能提示的问题
- VS2005 怪异问题解决,没有找到MFC80UD.DLL
- 如何解决VS2005没有代码智能提示(联想)的问题(转载)
- 实际遭遇并解决:类型“ASP.global_asax”同时存在的问题
- 解决vs2005 经WebDeployment发布后 global.asax 事件不启动
- 如何解决VS2005没有代码智能提示的问题
- Global.asax.cs防注入问题
- 解决 Global.asax的Application_Error中记录"文件不存在"的问题
- 发现CS的一个小问题.没有彻底解决.