Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# 自定义HttpHandler未启动,在ASP.NET MVC应用程序中返回404_C#_Asp.net Mvc_Httphandler - Fatal编程技术网

C# 自定义HttpHandler未启动,在ASP.NET MVC应用程序中返回404

C# 自定义HttpHandler未启动,在ASP.NET MVC应用程序中返回404,c#,asp.net-mvc,httphandler,C#,Asp.net Mvc,Httphandler,我不知道这是否与MVC网站上发生的事情有关,但我想我还是要提一下 在我的web.config中,我有以下几行: <add verb="*" path="*.imu" type="Website.Handlers.ImageHandler, Website, Version=1.0.0.0, Culture=neutral" /> 如果我运行我的网站并转到/something.imu,它只会返回404错误 我正在使用VisualStudio2008,并试图在ASP.Net开发服务器上

我不知道这是否与MVC网站上发生的事情有关,但我想我还是要提一下

在我的web.config中,我有以下几行:

<add verb="*" path="*.imu" type="Website.Handlers.ImageHandler, Website, Version=1.0.0.0, Culture=neutral" />
如果我运行我的网站并转到/something.imu,它只会返回404错误

我正在使用VisualStudio2008,并试图在ASP.Net开发服务器上运行它


我已经找了好几个小时了,它在一个单独的空网站上运行。所以我不明白为什么它不能在现有的网站上运行。顺便说一句,*.imu路径没有其他引用。

我怀疑这与您正在使用MVC这一事实有关,因为它基本上控制所有传入的请求

我怀疑您将不得不使用路由表,并可能创建一个新的路由处理程序。我自己没有做过,但类似的事情可能会奏效:

void Application_Start(object sender, EventArgs e) 
{
    RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Add(new Route
    (
         "{action}.imu"
         , new ImageRouteHandler()
    ));
}
然后,
ImageRouteHandler
类将返回您的自定义
ImageHttpHandler
,尽管从web上的示例来看,最好更改它,使其实现
MvcHandler
,而不是直接的
IHttpHandler

编辑1:根据Peter的评论,您也可以使用
IgnoreRoute
方法忽略扩展名:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.imu/{*pathInfo}");
}

哇,太好了,这让我找到了正确的方向!我在RegisterRoutes方法中添加了这一行,它将阻止MVC处理请求:routes.IgnoreRoute(“{resource}.imu/{*pathInfo}”);如果要忽略所有路径中的扩展名,请使用routes.IgnoreRoute(“{allimu}”,new{allimu=@.*\.imu(/)?”});来自phill haack
public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.imu/{*pathInfo}");
}