Asp.net mvc MVC5是否存在控制器

Asp.net mvc MVC5是否存在控制器,asp.net-mvc,controller,asp.net-mvc-5,exists,Asp.net Mvc,Controller,Asp.net Mvc 5,Exists,我正在编写一个MVC 5 internet应用程序,希望知道是否可以检查控制器是否存在,其中我只有控制器的名称 我有一个Application\u Error函数,当发生错误时,该函数获取控制器的名称,我希望重定向到控制器的索引方法。问题是,用户可以输入一个不存在的控制器名称,而重定向到此控制器会导致无休止的循环 提前感谢。目前,如果控制器不存在,我将收到一个异常。检查控制器是否不存在的唯一方法是检查是否引发异常吗?我对您的代码所做的更改就是用所需的控制器名称替换“ControllerName”

我正在编写一个MVC 5 internet应用程序,希望知道是否可以检查
控制器
是否存在
,其中我只有
控制器的
名称

我有一个
Application\u Error
函数,当发生错误时,该函数获取
控制器的名称,我希望重定向到
控制器的索引方法。问题是,用户可以输入一个不存在的
控制器
名称,而重定向到此
控制器
会导致无休止的循环


提前感谢。

目前,如果控制器不存在,我将收到一个异常。检查控制器是否不存在的唯一方法是检查是否引发异常吗?我对您的代码所做的更改就是用所需的控制器名称替换“ControllerName”。这就是所有需要做的事情吗?您还需要更改名称空间。如果控制器不存在,则控制器应为null,或者包含控制器,您还需要设置区域吗?您遇到了什么异常?System.Web.HttpException未被用户代码处理。System.Web.Mvc.dll中发生“System.Web.HttpException”类型的异常,但未在用户代码中处理其他信息:未找到路径“/knaklsdnlsda”的控制器或未实现IController。
var tempRequestContext = new RequestContext(Request.RequestContext.HttpContext, 
                                            new RouteData());
tempRequestContext.RouteData.DataTokens["Area"] = "";
tempRequestContext.RouteData.DataTokens["Namespaces"] = "YourCompany.Controllers";
var controller = ControllerBuilder.Current.GetControllerFactory()
            .CreateController(tempRequestContext, "ControllerName");

if(controller != null)
{
   //TODO: Redirect
}