0

その場で画像のサイズを変更し、期限切れヘッダーを追加するために使用する IRouteHander クラスがあります。最近、MVC5 に移行し、コードを更新しています。RouteConfig.cs でそのクラスに同じルートを登録しようとしました

routes.Add(new Route("Image/{w}/{h}/{src}", new ThumbImageRouteHandler()));

しかし、このルートは MVC3 のように機能しなくなり、MVC5 で 404 エラーが発生します。ここに欠けているものはありますか?このルートはにつながります

public class ThumbImageRouteHandler : IRouteHandler
{
         public IHttpHandler GetHttpHandler(RequestContext requestContext)
            {
                HttpHanler httpHandler = new HttpHanler();
                return httpHandler;
            }
            public class HttpHanler : IHttpHandler
            {
                public bool IsReusable
                {
                    get
                    {
                        return false;
                    }
                }
                public void ProcessRequest(HttpContext context)
                {
                //Do something
                }
               }
           }
}

この問題を解決するのを手伝ってください。ありがとう

4

1 に答える 1

1

調査の結果、webconfig を機能させるには行を追加する必要があることがわかりました。その方法は次のとおりです。

  <system.webServer>
    <handlers>
      <add name="ApiURIs-ISAPI-Integrated-4.0-Image" path="/Image/*" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

IRouteHandler は動的パスを使用してサイズ変更された画像を生成しているため、IIS はリンク内のドット (.) のためにこれがディレクトリへの実際のパスであると認識し、実際にはそうではない拡張子であると認識します。そのため、Web.Config にハンドラーを追加して機能させる必要があります。

于 2015-07-03T02:38:12.493 に答える