我想知道是否有任何技术可以控制Web应用程序(ASP.NET)中客户端和服务器之间的通信
示例:
工作流
答案 0 :(得分:2)
您可以在Global.asax
文件中使用以下方法拦截请求:
protected void Application_BeginRequest(object sender, EventArgs e)
{
var request = ((System.Web.HttpApplication)(sender)).Context.Request;
//here you can evaluate and take decisions about the request
}
答案 1 :(得分:0)
在任何ASP.NET应用程序中,您都可以使用HttpApplication事件来跟踪所需的更改。例如,您可以使用BeginRequest和/或EndRequest事件跟踪它:
protected void Application_BeginRequest(object sender, EventArgs e)
{
if(MyGlobalFlags.TrackingRequests){
// do stuff
}
}
protected void Application_EndRequest(object sender, EventArgs e)
{
if(MyGlobalFlags.TrackingRequests){
// do stuff
}
}
根据个人意见,我会使用全球标志,如果我愿意,我可以轻松关闭。
如果您正在讨论ASP.NET MVC应用程序,我还建议您在要跟踪的操作中使用ActionFilters。您可以实现自己的ActionFilter类并跟踪OnActionExecuted和/或OnResultExecuted的更改。我仍然会使用全局标志来关闭跟踪而不更改代码。
public class MyTrackingActionFilter: ActionFilterAttribute{
public override OnActionExecuted(ActionExecutedContext filterContext)
{
if(MyGlobalFlags.TrackingRequests){
// do stuff
}
}
public override OnResultExecuted(ActionExecutedContext filterContext)
{
if(MyGlobalFlags.TrackingRequests){
// do stuff
}
}
}
作为一个说明,我不会尝试在这些事件中做大事。如果该轨道需要可以并行运行的大量数据库操作,我建议您在使用线程池时使用队列系统。