编程语言
首页 > 编程语言> > c# – 无效控制器时的StructureMap错误

c# – 无效控制器时的StructureMap错误

作者:互联网

我正在使用像Rob Conery那样的MVC店面的结构图,我有一个AdminController,所以我只需输入:

website/Admin/action

但如果我拼错控制器名称,我会收到以下错误:

异常详细信息:System.ArgumentNullException:Value不能为null.
参数名称:key

此行发生错误:

Controller controller = ObjectFactory.GetInstance(controllerType) as Controller;

有没有人对我如何处理这个错误有任何想法,或者根本不允许它发生,也许只是转到404页面?

提前干杯

解决方法:

问题是如果没有具有预期类型名称的控制器(即,如果用户键入“Amdin”,则ControllerFactory基类将查找“AmdinController”并且将找不到它,但仍将调用您的overriden方法).在这种情况下,controllerType变量将为null.所以你可以在你引用的行之前检查它为null,然后(如果它为null):

A)实施拼写修正,例如cfeduke建议

或者B)简单地抛出一个状态代码为404的HttpException(这应该会导致你正在寻找的404错误).

注意:如果你进行了拼写纠正,你应该做一个Response.Redirect到新的URL,而不是只是静默加载正确的控制器,这样地址栏改变以反映拼写纠正

标签:c,asp-net-mvc,structuremap
来源: https://codeday.me/bug/20190527/1161180.html