将错误从HttpModule传递到MVC应用程序

时间:2013-08-19 18:15:21

标签: asp.net asp.net-mvc-4 httpmodule

我有一个用于身份验证的自定义HttpModule。在模块的AuthenticateRequest事件处理程序中,我检查自定义SSO票证是否可用,并在这种情况下执行一些身份验证逻辑。

如果SSO票证可用但不正确,我想向用户显示友好的错误消息。我希望能够以某种方式设置HTTP状态401(未授权,在身份验证失败时使用)并从http模块传递有意义的错误消息。

然后我希望MVC应用程序以某种方式获取此信息并使用它来呈现自定义401错误页面,其中包含来自模块的有意义的错误消息。

在http模块中引发错误的最佳方法是什么?使用MVC应用程序显示错误的最佳方法是什么(在MVC应用程序的布局中获取错误消息)?

1 个答案:

答案 0 :(得分:1)

您可以在:

中创建自定义controllerfactory
protected override IController GetControllerInstance(RequestContext context, Type controllerType)

您可以通过上下文对象访问HttpContext和RouteData。 如果用户未经过身份验证,您可以使用所需的routeconstraints /参数(例如http状态消息)操作routedata以使您所需的控制器/操作失效(