2009-05-14 11 views
12

MVC Webサイトでこれが起こっていることは関係ありませんが、とにかく言及すると思います。私は私のImageHandlerクラスを含むフォルダという名前のハンドラを持っているウェブサイトのプロジェクトでカスタムHttpHandlerが起動せず、ASP.NET MVCアプリケーションで404を返します。

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

:私のweb.configファイルで

は、私はこれらの行を持っています。それは(私はの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; } 
     } 
    } 
} 

私は私のウェブサイトを実行し、それだけで404エラーを返し/something.imuに行く場合は、次のようになります。

私はVisual Studio 2008を使用しており、これをASP.Net開発サーバー上で実行しようとしています。

私は数時間探していて、別の空のWebサイトで作業していました。だから私はそれが既存のウェブサイトの中でうまくいかない理由を理解していない。 * .imuパスbtwへの他の参照はありません。

答えて

32

これは、基本的にすべての着信要求を制御するので、これは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を返します。ストレートIHttpHandlerではなく、MvcHandlerを実装します。

編集1:ピーターのコメントを1として、あなたもIgnoreRouteメソッドを使用して、拡張子を無視することができます。素敵な

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

おっと、正しい方向に私を入れて! 私はこの行をRegisterRoutesメソッドに追加しました。このメソッドはMVCがリクエストを処理するのを止めます:routes.IgnoreRoute( "{resource} .imu/{* pathInfo}"); – Peter

+1

すべてのパスで拡張子を無視する場合は、routes.IgnoreRoute( "{* allimu}"、new {allimu = @ "。* \。imu(/.*)?)}を使用します。フィルハックからhttp://haacked.com/archive/2008/07/14/make-routing-ignore-requests-for-a-file-extension.aspx/ – jsturtevant

関連する問題