次のルート ハンドラを使用して、.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")));