C# 自定义HttpHandler未启动,在ASP.NET MVC应用程序中返回404
我不知道这是否与MVC网站上发生的事情有关,但我想我还是要提一下 在我的web.config中,我有以下几行: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开发服务器上
<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}");
}