Ich weiß nicht, ob es relevant ist, dass dies in einer MVC-Website geschieht, aber dachte, ich würde es trotzdem erwähnen.Benutzerdefinierte HttpHandler nicht feuern, 404 zurück in ASP.NET MVC-Anwendung
In meinem web.config habe ich diese Zeilen:
<add verb="*" path="*.imu" type="Website.Handlers.ImageHandler, Website, Version=1.0.0.0, Culture=neutral" />
in der Website Projekt, das ich einen Ordner mit dem Namen Handlers haben, die meine imagehandler-Klasse enthält. Es sieht wie folgt aus (ich habe den Code Process entfernt)
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; }
}
}
}
Wenn ich meine Website laufen und gehen Sie /something.imu es nur einen 404-Fehler zurückgibt.
Ich verwende Visual Studio 2008 und versuche, dies auf dem ASP.Net-Entwicklungsserver auszuführen.
Ich habe mehrere Stunden gesucht und hatte es in einer separaten leeren Website arbeiten. Also verstehe ich nicht, warum es in einer bestehenden Website nicht funktionieren wird. Es gibt keine weiteren Verweise auf den Pfad * .imu btw.
Whoa schön, die mich in die richtige Richtung setzen! Ich habe diese Zeile in der RegisterRoutes-Methode hinzugefügt, die MVC davon abhält, die Anfrage zu bearbeiten: routes.IgnoreRoute ("{resource} .imu/{* pathInfo}"); – Peter
Wenn Sie die Erweiterung in allen Pfaden ignorieren möchten, verwenden Sie routes.IgnoreRoute ("{* allimu}", neu {allimu = @ ". * \. Imu (/.*)?"}); von phill haack http://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx/ – jsturtevant