0

次のルート ハンドラを使用して、.net 4.0 ソリューションで URL をルーティングしています。デフォルトでは、ルート ハンドラは存在するファイルを無視します。css ファイル、js ファイル、画像ファイルなどをマップしたくないので、ルート ハンドラはまさに私が必要としているものです。

webconfig の変更 (customerros セクションの追加) により、バグに気付きました。画像へのリンクがあり、画像が存在しない場合、URL がマップされ、多くの問題 (エラー) が発生します。

ここで必要なのは、ファイル拡張子 (js、css、jpg、gif など) を完全に無視するか、できれば .aspx ファイルのみをマップすることです。しかし、私はそれを行う方法がわかりません。

ps: ウェブサイトはユーザーのアップロードに基づいているため、壊れたリンクのパーセンテージが常に存在します。

public class RouteHandler : IRouteHandler
{
    private readonly string _path;

    public RouteHandler(string path)
    {
        _path = path;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        Page page = BuildManager.CreateInstanceFromVirtualPath(_path, typeof(Page)) as Page;

        foreach (KeyValuePair<string, object> i in requestContext.RouteData.Values)
        {
            HttpContext.Current.Items[i.Key.Replace("*", "")] = i.Value;
        }

        return page;
    }
}

routes.Add("somename", new Route("folder/insidefolder", null, null, new RouteHandler("~/folder-insidefolder.aspx")));
4

1 に答える 1

0

次の行で画像の問題が解決すると思います(さらにテストが必要です):

routes.Ignore("{*images}", new { images = @".*\.(jpg|JPG|gif|GIF|png|PNG|ico|ICO)(\?.*)?" });
于 2012-06-29T22:28:37.473 に答える