问题标签 [iroutehandler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4310 浏览

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

在这个问答中,我找到了一种让 ASP.NET MVC 支持异步处理的方法。但是,我不能让它工作。

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

然后,在文件 Global.asax.cs 的 RegisterRoutes 方法中,注册这个类AsyncMvcRouteHandler

我在ProcessRequestBeginProcessRequestEndProcessRequest设置断点。仅执行ProcessRequest。换句话说,即使AsyncMvcHandler实现了IHttpAsyncHandler。ASP.NET MVC 不知道这一点,只是将其作为IHttpHandler实现处理。

如何使 ASP.NET MVC 将AsyncMvcHandler视为IHttpAsyncHandler以便我们可以进行异步页面处理?

0 投票
2 回答
3709 浏览

c# - Web 窗体中的 IRouteHandler:需要 HttpContext.User 的路由请求

我正在尝试向 Asp.Net Web Forms 应用程序添加一个非常基本的路由(在 IIS 7 下运行,集成模式):对于来自http://mydomain.com/foo/的请求,我想显示结果动态页面 ( http://mydomain.com/foopage.aspx )。

我创建了一个 RouteHandler 来完成所有这些工作,并且它似乎正在正确路由。

问题是,在我的 RouteHandler 的 GetHttpHandler 方法中,当前用户(requestContext.HttpContext.User、System.Web.HttpContext.Current.User)的所有实例都是空的。遗憾的是, foo.aspx 需要知道当前用户是什么(用于登录控件、角色等),因此呈现页面会引发空引用异常。我的猜测是,在 Asp.Net 有机会将 HttpContext 与用户信息连接起来之前,这些路由处理程序就会启动。任何解决方法的想法?

PS - 我意识到这可以通过在http://mydomain.com/foo/default.aspx的页面中执行 Server.Transfer 来完成。我想为这类事情使用路由,而不是让一堆无用的文件夹把事情弄得乱七八糟。

谢谢!

0 投票
1 回答
2071 浏览

asp.net-mvc - ASP.NET MVC 2.0 + IRouteHandler 的实现不会触发

任何人都可以帮我解决这个问题,因为我不知道为什么 public IHttpHandler GetHttpHandler(RequestContext requestContext) 没有执行。在我的 Global.asax.cs 我有

//CustomRouteHandler实现如下

任何人都可以告诉我我在这里缺少什么。简单地 public IHttpHandler GetHttpHandler(RequestContext requestContext) 不会触发。

我也没有更改 web.config 中的任何内容。我在这里缺少什么?请帮忙。

0 投票
3 回答
3163 浏览

asp.net - 带有 Asp.net 路由的 IRouteHandler.GetHttpHandler 中的会话为空

我试图在我的 IRouteHandler 类的 GettHttpHandler 方法中启用 Session,但 session 始终为空。有人可以告诉我我做错了什么吗?

在 global.asax 我有

Session 为 null 的 MyRouteHandler 类如下所示:

我制作了一个显示问题的小型测试应用程序。

有人可以告诉我我做错了什么吗?

编辑添加:

是的,我确实需要路由处理程序中的会话数据。原因有很多,但一个很容易解释的原因是用户可以切换到以预览模式浏览网站。

该站点由数据库中的动态页面(/page1/page2...)的层次结构组成,可以正常发布或预览。浏览该站点的内容制作者可以选择只查看普通页面或者也可以查看那些发布以供预览的页面。浏览模式存储在用户的会话中,因此路由处理程序需要知道浏览模式才能解决请求的页面。

所以我真的需要那个阶段的会议。

0 投票
1 回答
823 浏览

asp.net-mvc - 保护 ASP.NET MVC 中的图像(使用自定义 RouteHandler)

我为想要保护的图像创建了一个自定义 RouteHandler。我的 RouteHandler 只需采用一条新路由 (graphics/{filename}) 并查找真实文件路径、设置 mime 类型并提供服务。这很好用。(http://www.mikesdotnetting.com/Article/126/ASP.NET-MVC-Prevent-Image-Leeching-with-a-Custom-RouteHandler

接下来我想做的是在我的自定义处理程序中检查我之前设置的会话变量,以确保尝试查看图像的人有权这样做。

基本上,他们会传递一个登录名(输入一个代码),这将设置一个会话变量,我将在自定义 RouteHandler 中查找该变量。

我的问题是我似乎无法从自定义 RouteHandler 中获取会话数据。

最后,我的问题是:如何在控制器中设置数据并在后续请求中从自定义 RouteHandler 中提供给我?

0 投票
2 回答
929 浏览

asp.net-mvc-2 - 自定义 IRouteHandler 路由搞砸了 MVC 链接构建

我在 ASP.NET MVC2 中有一个自定义路由处理程序来捕获前缀路径中的所有 url,如下所示:

路由工作正常,但如果我使用 Html.Actionlink 或从控制器返回 ReturnToAction(),则构建的 uri 会创建一个损坏的 uri,如下所示:

代替

我如何影响 uri 构建逻辑以考虑默认路由模式?

0 投票
1 回答
176 浏览

asp.net - 仅通过代码从特定目录提供静态文件

我正在寻找一种基于代码的解决方案,仅使用 ASP.NET 路由从指定目录提供静态文件,而不是HttpHandlerWeb.config.

例如:

我有以下部分目录布局

如果从目录中请求任何文件,则/public应按原样提供它们。例如,如果请求任何其他静态文件/readme.txt,则应将其作为404. 允许提供静态文件的目录应该很容易指定为字符串 ( var publicDir = "public";)。

我希望在文件中几乎不需要配置的情况下执行此Web.config操作,并且大部分都在代码中配置。

0 投票
1 回答
370 浏览

c# - 自定义 ASP.NET 基于回调的路由;动态 ASPX 页面实例化和渲染

我正在做一个小型学校项目,一个 ASP.NET C# 网站;我们正在使用 Web 应用程序,使用Global.asax文件来集中请求逻辑。

无论如何,我和我的同事负责我们小组的编码,我们都是经验丰富的 PHP 开发人员。我们都喜欢使用 PHP 框架Laravel使用的架构风格,使用路由(与之相关的回调)作为“控制器”,并且(尽管它是一个方形钉,圆孔问题)正在尝试为此复制该功能项目。

这不是一件容易的事。我已将IRouteHandler接口实现为CallbackRouteHandler尝试开始复制此功能:

不幸的是,这大约是我所得到的。我正在阅读ASP.NET Page Life Cycle Overview,试图更好地理解整个过程。

我们坚持的是在给定路由回调的范围内以编程方式加载 ASPX 文件(而不是实例化为Page对象)。我们希望有一种相当简单的方法可以在回调的范围内完成,例如:

我很难理解这两个:1)如何做到这一点?2)何时(相对于上述页面生命周期)执行此操作。

如果有的话)如何实现这种功能?我看到这个被 ASP.NET 隐藏起来的过程看起来非常复杂,但肯定其他人以前也曾走过这条路。

0 投票
1 回答
3018 浏览

c# - 如何从 MVC 自定义路由器处理程序将用户重定向到另一个 URL?

我正在使用 CustomMvcRouterHandler,基于一些逻辑,我只想将用户从 CustomHandler 重定向到另一个 Url。

如何从 CustomRouterHandler 将用户重定向到“Home/CompanyProfile”?

0 投票
1 回答
362 浏览

vb.net - MVC 自定义 RouteHandler 没有为文件触发

我有以下代码用我的自定义路由处理程序注册路由:

这允许我访问已编译 DLL 中的嵌入式资源,例如:/Content/PluginAssemblyName/File.name

在 MVC 3 和 4 中,ProcessRequest 函数每次都会触发,但从 MVC 5 开始,它不会触发,它仅在我指定目录时触发,这显然会给我一个空引用异常,因为我正在寻找文件,而不是目录(命名,显然,由 . 作为文件应该)

我尝试排除 .css 和 .js 来尝试查看我的自定义路由处理程序是否会触发,什么也没有。在 MVC 4 项目中对此进行测试,效果很好。

开始扯我的头发。

任何想法为什么 RouteHandler 不会在 MVC 5 中触发,但在 MVC 4 和 3 中会触发?

(这是一个使用 MEF 的 Pluggable MVC 项目,由于升级路径不太顺利,因此我将其逐步引入 MVC 5)