gpt4 book ai didi

asp.net - 如何让 ASP.NET MVC 从 IRouteHandler.GetHttpHandler() 识别 IHttpAsyncHandler?

转载 作者:行者123 更新时间:2023-12-01 00:08:42 27 4
gpt4 key购买 nike

在此 question & answer ,我找到了一种让 ASP.NET MVC 支持异步处理的方法。但是,我无法让它发挥作用。

基本上,这个想法是创建一个新的 IRouteHandler 实现,它只有一个方法 GetHttpHandler . GetHttpHandler 方法应该返回 IHttpAsyncHandler实现而不仅仅是 IHttpHandler , 因为 IHttpAsyncHandler具有 Begin/EndXXXX 模式 API。

public class AsyncMvcRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new AsyncMvcHandler(requestContext);
}

class AsyncMvcHandler : IHttpAsyncHandler, IRequiresSessionState
{
public AsyncMvcHandler(RequestContext context)
{
}

// IHttpHandler members
public bool IsReusable { get { return false; } }
public void ProcessRequest(HttpContext httpContext) { throw new NotImplementedException(); }

// IHttpAsyncHandler members
public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData)
{
throw new NotImplementedException();
}

public void EndProcessRequest(IAsyncResult result)
{
throw new NotImplementedException();
}
}
}

然后,在文件 Global.asax.cs 的 RegisterRoutes 方法中,注册这个类 AsyncMvcRouteHandler .
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.Add(new Route("{controller}/{action}/{id}", new AsyncMvcRouteHandler())
{
Defaults = new RouteValueDictionary(new { controller = "Home", action = "Index", id = "" }),
});
}

我在 处设置了断点处理请求 , 开始处理请求 EndProcessRequest .只有 处理请求 被执行。换句话说,即使 AsyncMvcHandler 工具 IHttpAsyncHandler . ASP.NET MVC 不知道这一点,只是将其作为 IHttpHandler 处理。执行。

如何让 ASP.NET MVC 处理 AsyncMvcHandler IHttpAsyncHandler 所以我们可以进行异步页面处理?

最佳答案

我遇到了同样的问题,但是我发现这是因为我捕获了所有路由处理程序:

routes.MapRoute(
"Default",
"{controller}/{action}",
new { controller = "Home", action = "Index" }
);

正在接收请求,而不是我添加的处理异步路由处理程序的自定义路由。也许通过在您的自定义路由定义中使用 .mvc,您创建了一个区别,以便使用它而不是同步包罗万象。

关于asp.net - 如何让 ASP.NET MVC 从 IRouteHandler.GetHttpHandler() 识别 IHttpAsyncHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com