gpt4 book ai didi

c# - 自定义 HttpHandler 未触发,在 ASP.NET MVC 应用程序中返回 404

转载 作者:可可西里 更新时间:2023-11-01 08:16:07 25 4
gpt4 key购买 nike

我不知道这在 MVC 网站中发生是否相关,但我想我还是要提一下。

在我的 web.config 中有这些行:

<add verb="*" path="*.imu" type="Website.Handlers.ImageHandler, Website, Version=1.0.0.0, Culture=neutral" />

在网站项目中,我有一个名为 Handlers 的文件夹,其中包含我的 ImageHandler 类。看起来像这样(我去掉了processrequest代码)

using System;
using System.Globalization;
using System.IO;
using System.Web;

namespace Website.Handlers
{
public class ImageHandler : IHttpHandler
{
public virtual void ProcessRequest(HttpContext context)
{
//the code here never gets fired
}

public virtual bool IsReusable
{
get { return true; }
}
}
}

如果我运行我的网站并转到/something.imu,它只会返回 404 错误。

我正在使用 Visual Studio 2008 并尝试在 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,尽管从网络上的示例来看,更改它可能会更好,以便它实现 MvcHandler,而不是直接的 IHttpHandler

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

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

关于c# - 自定义 HttpHandler 未触发,在 ASP.NET MVC 应用程序中返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/863243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com