asp.net – Global.asax.cs事件在网站发布后未触发
我一直在网上寻找答案,这几个小时,所以我希望有人可以提供帮助.
我在VS 2010(.Net 4.0框架,C#)中有一个WebSite,它在根目录中有一个Global.asax文件,在App_Code文件夹中有一个Global.asax.cs文件. (请注意,这是一个WebSite,而不是Web应用程序).从我的本地开发机器运行此WebSite时,一切都按预期运行 – 更具体地说,Global.asax.cs文件中的Session_Start事件在每个会话开始时触发并运行一些代码以获取用户的登录凭据,这将确定它们的内容允许根据应用程序的安全级别查看/编辑应用程序. 但是,一旦我将此WebSite发布到Windows 2003 R2服务器上,Global.asax.cs文件中的所有事件都不会触发. (只有Session_Start事件中需要代码,但我也将代码放在Application_Start中,只是为了查看它是否会触发 – 它没有). 这是Global.asax代码: <%@ Application CodeBehind="~App_CodeGlobal.asax.cs" Inherits="Global" Language="C#" %> 这是Global.asax.cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; /// <summary> /// Summary description for Global /// </summary> public partial class Global : System.Web.HttpApplication { public Global() { // TODO: Add constructor logic here } protected void Application_Start(object sender,EventArgs e) { // Code that runs on application startup } protected void Application_End(object sender,EventArgs e) { // Code that runs on application shutdown } protected void Application_Error(object sender,EventArgs e) { // Code that runs when an unhandled error occurs } void Session_Start(object sender,EventArgs e) { try { Session["SessionSink"] = new SessionSink(); this.GetUserName(); } catch (Exception ex) { string msg = "An error occurred in Global.asax::Session_Start"; ExceptionWriter ew = new ExceptionWriter(); ew.LogError(msg,ex); } } void Session_End(object sender,EventArgs e) { // Code that runs when a session ends. } } 基于我读过的其他答案/讨论的一些注释:一旦发布,PrecompiledApp.config就会出现在网站的文件夹中.此外,App_global.asax.compiled和App_global.asax.dll出现在bin文件夹中. 任何人都知道问题可能是什么?为什么这可以从我的本地机器上运行,但是一旦它发布到服务器上就不行?是否存在我缺少的IIS设置? 这是我第一次使用asp.net“网站”,所以任何帮助将不胜感激.谢谢. 解决方法
你可以通过不使用global.asax.cs来规避这一点;即删除global.asax.cs并将global.asax修改为
<%@ Application Language="C#" Inherits="System.Web.HttpApplication" %> <script runat="server"> public override void Init() { base.Init(); var module = (SessionStateModule)Modules["Session"]; module.Start += new EventHandler((sender,args) => { // create session sink here }); } </script> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 为什么Response.BufferOutput = False,不工作?
- ASP.NET WebService如何去掉asmx后缀
- asp-classic – 如何在经典的asp中制作一个预防sql注入的预
- 在asp.net中访问服务器端的输入类型文件
- 获取当前的ASP.NET机器密钥
- 什么是在ASP.NET网站中嵌入视频的有效选项?
- asp-classic – 浏览器似乎忽略了响应缓存控制指令
- asp.net-mvc – MVC4 WebAPI原因短语?
- asp.net-mvc-4 – Dapper.net如何创建地图
- asp.net-core – 从appsettings.json获取ConnectionString,
- asp.net-mvc-2 – 如何让HandleErrorAttribute与
- asp.net – 更改ContentPlaceHolder的ID
- asp.net – Javascript之前asp:ButtonField点击
- asp.net-mvc-3 – 在脚手架视图MVC3中进行分页
- asp.net mvc 中 一种简单的 URL 重写
- asp.net – monodevelop可以像没有VS2010一样进行
- asp.net-mvc – 在客户端应用程序中配置用户授权
- asp.net – 在中等信任下,在GMail SMTP上发送电子
- asp.net-mvc – 如何在视图模型中更改隐式必需属
- asp.net-mvc – Stack Overflow问题路由