执行控制器方法而不引发Session_Start事件

本文关键字:Session Start 事件 控制器 方法 执行 | 更新日期: 2023-09-27 18:30:27

我在Session_Start中有一些逻辑,这个逻辑对于我的所有控制器方法都是实际的,除了一个特殊方法。当用户转到特殊方法 URL 时,我不需要执行Session_start逻辑。

任何想法我该怎么做?

执行控制器方法而不引发Session_Start事件

据我了解您的问题,如果请求特殊 url,您不希望调用 Session_Start 方法中的代码。我认为了解您的问题是什么,您想要解决会有所帮助。现在这是我的答案:

由于Session_Start只调用一次(至少通常,取决于您对会话模块的配置 - 请参阅我对问题的评论),因此仅当客户端首先调用"特殊"url时才有效,例如在调用其他URL之前。如果首先调用了另一个 url,会话将根据您的代码进行初始化。重要提示:如前所述,根据您的配置,总会有一个会话(但在这种特殊情况下,您不希望在 Session_Start 中执行自定义逻辑):

您可以使用当前 HttpRequest 并对某些属性执行检查:

// this will (usually) only be called once, on the first request of the client
protected void Session_Start() {
        // perform your check here if this is the url you want to exclude
        if (HttpContext.Current.Request.Url.OriginalString.ToLowerInvariant().EndsWith("something")) {
            return;
        }
        // your initialization here that should not be executed for clients accessing the site using the above url
    }

如您所见,您可以访问 Request 对象,并根据您的要求在那里执行检查。