如何配置 Asp.net Mvc 将每个请求重定向到配置页面?
对于Asp.net Mvc项目,当用户(应该是该网站的管理员)第一次访问该网站时,我需要将每个请求重定向到配置页面。 此操作类似于默认登录页面(如果访问被拒绝,每个请求都将重定向到默认登录页面)。
用户配置好配置文件后,路由表将被映射到普通控制器。
诗。 此页面应帮助管理员检测错误配置并易于部署。
更新#1 我尝试在 Codeplex 上使用 ASP.NET MVC WebFormRouting Demo 。 但是当用户访问某些现有页面(例如“~/AccessDenied.aspx”或“~/web.config”)时,我无法重定向。
routes.MapWebFormRoute("RedirectToConfig", "{*anything}", "~/App_Config");
谢谢
For Asp.net Mvc project, I need to redirect every request to configuration page when user(should be admin of this website) visit this website at the first time. This operation like default login page(every request will be redirect to default login page if access denied).
After user config the configuration file, Route table will be mapped to normal controllers.
Ps. This page should helps Admin for detect error configuration and easy to deploy.
Update #1
I try to use ASP.NET MVC WebFormRouting Demo on Codeplex. But I can't redirect when user visit some existing page like "~/AccessDenied.aspx" or "~/web.config".
routes.MapWebFormRoute("RedirectToConfig", "{*anything}", "~/App_Config");
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据您的描述,这似乎是一个授权问题,因此我建议使用自定义 Authorize 属性类(继承自 AuthorizeAttribute)。
从这里您可以重写 OnAuthorization 方法,您可以在其中检查用户是否已完成所需的配置步骤并相应地设置 filterContext.Result。 基本实现如下所示(假设您有有效的 /Account/Configure 路由):
您可以在 StackOverflow 上找到有关如何创建自定义 AuthorizeAttribute 类的其他示例。
From your description, this appears to be an authorization concern, so I would recommend a custom Authorize attribute class (inherit from AuthorizeAttribute).
From here you can override the OnAuthorization method where you can check if the user has completed your required configuration steps and set the filterContext.Result accordingly. A basic implementation would look something like this (this assumes you have a valid /Account/Configure route):
You can find other examples of how to create a custom AuthorizeAttribute class here on StackOverflow.
2 个想法:
了解包罗万象的想法的详细信息:
RedirectToUrl(" config.aspx")
但是 Application_BeginRequest 中的解决方案会更简单,因为处理此问题的整个代码都集中在一个地方
2 ideas:
Details for the catch-all idea:
RedirectToUrl("config.aspx")
But the solution in Application_BeginRequest would be simpler, since the whole code to handle this in one place
现在,我可以应用 我的技术另一个问题来解决这个问题。 通过在应用程序启动时在静态实例中保留一些值。 请看下面的代码。
部分ConfigBootstapper.cs
部分ConfigModule.cs
部分Global.asax
PS。 不要忘记在重定向之前检查一些导致无限循环的条件。
Now, I can apply technique from my another question to solve this problem. By keep some value in static instance when application is starting. Please look at the following code.
partial ConfigBootstapper.cs
partial ConfigModule.cs
partial Global.asax
PS. Don't forget to checking some condition that cause infinite-loop before redirect.