Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何遍历所有控制器并确保URL是针对控制器的?_C#_Asp.net Mvc 4 - Fatal编程技术网

C# 如何遍历所有控制器并确保URL是针对控制器的?

C# 如何遍历所有控制器并确保URL是针对控制器的?,c#,asp.net-mvc-4,C#,Asp.net Mvc 4,在global.asax.cs中的Begin request方法中,我想检查当前请求是否是MVC请求,而不是.css文件或.js文件等的请求 假设我有以下控制器: /User/ /Product/ /Store/ /Checkout/ 我想循环查看控制器的名称,并验证当前请求URL是否用于上述控制器中的操作 How can I look through the controller names? 您可以使用反射并从指定的命名空间获取所有控制器 using System.Reflection;

在global.asax.cs中的Begin request方法中,我想检查当前请求是否是MVC请求,而不是.css文件或.js文件等的请求

假设我有以下控制器:

/User/
/Product/
/Store/
/Checkout/
我想循环查看控制器的名称,并验证当前请求URL是否用于上述控制器中的操作

How can I look through the controller names?

您可以使用反射并从指定的命名空间获取所有控制器

using System.Reflection;
private Type[] GetControllersInNamespace(Assembly assembly, string controllernamespace)
{
    return assembly.GetTypes().Where(types => string.Equals(types.Namespace, controllernamespace, StringComparison.Ordinal)).ToArray();
}

您可以使用反射并从指定的命名空间获取所有控制器

using System.Reflection;
private Type[] GetControllersInNamespace(Assembly assembly, string controllernamespace)
{
    return assembly.GetTypes().Where(types => string.Equals(types.Namespace, controllernamespace, StringComparison.Ordinal)).ToArray();
}

根据您的需要,最好的解决方案是
routes.IgnoreRoute()

有关各种示例,请参见和,但基本前提是您希望MVC引擎接受路由,但它会说“我不应该对此做任何事情”,并让它返回到IIS以查找实际文件


这意味着您无需在运行中尝试确定您拥有的控制器,这在您的服务器上要容易得多。

根据您的需要,您的最佳解决方案将是
routes.IgnoreRoute()

有关各种示例,请参见和,但基本前提是您希望MVC引擎接受路由,但它会说“我不应该对此做任何事情”,并让它返回到IIS以查找实际文件


这意味着您无需在运行中尝试确定您拥有的控制器,这在您的服务器上要容易得多。

只是想知道为什么要这样做?您的用例是什么?可能有更好的方法。@DarthVader我使用IIS,并且有一个通配符映射设置,所以所有请求都要通过MVC,甚至css/图像等。所以我想对一个真正是MVC控制器请求的请求做些事情。只是好奇你为什么要这样做?你的用例是什么?可能有更好的方法。@DarthVader我使用IIS,并且有一个通配符映射设置,所以所有请求都要通过MVC,甚至css/图像等。所以我想对一个真正是MVC控制器请求的请求做一些事情。