c# - 在C#Web表单上的每个请求上运行的事件

标签 c# asp.net .net webforms

我需要在服务器上发出的每个请求之前或之上运行的事件。

如果存在该事件,则需要对该事件运行一些代码。

例如:有人键入http://www.website.com/some-link

我需要先检查此链接,然后再由应用程序对其进行处理。

我正在使用C#Web表单。

到目前为止,我正在尝试在Global.asax.cs中查找事件,例如

protected virtual void Application_BeginRequest(object sender, EventArgs e)
{
    // need to track requested url
    // code that needs to be run with requested url.
}


有什么合适的解决方案吗?

特纳克斯

最佳答案

正确的解决方案是使用事件Application_BeginRequest,除非您要使事情复杂化并使用不推荐使用的httpmodules。

protected virtual void Application_BeginRequest(object sender, EventArgs e)
{
    var url = Request.Url.AbsoluteUri;
    var path = Request.Url.AbsolutePath;
    var host = Request.Url.Host;

    // your magic goes here
}


就像一些信息一样,所有事件的顺序是:


Application_BeginRequest
Application_AuthenticateRequest
Application_AuthorizeRequest
Application_ResolveRequestCache
Application_AcquireRequestState
Application_PreRequestHandlerExecute
Application_PreSendRequestHeaders
Application_PreSendRequestContent


asp.net页面代码被执行

Application_PostRequestHandlerExecute
Application_ReleaseRequestState
Application_UpdateRequestCache
Application_EndRequest

关于c# - 在C#Web表单上的每个请求上运行的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31310120/

相关文章:

c# - Mono c# 的存储过程?

c# - 如何找出 iis7 中的 404 错误处理程序中缺少哪个请求路径?

c# - EditorFor 和 StringLength DataAnnotations

asp.net - 使用 mysql 数据库构建电子商务网站需要什么信任级别?

.net - VB.NET 中的行尾标识符?

c# - 为什么我不能在 LINQ 语句中执行多于一层的包含?

c# - 如何使用 Razor 在主视图 View 模型中保存部分 View View 模型项?

javascript - 为什么单选按钮没有传递 asp 控件的 clientID

c# - 用于 sqlite 的 oledb 提供程序

c# - 使用 XDocument 获取大写的 UTF-8