아래 코드는 거의 다 잡는다 ... 아마 냄새지만.
http://www.mysite.com/
예를 들어 여전히 default.aspx로 라우팅됩니다. 그러나 뭔가
http://www.mysite.com/some/page/that/doesnt/exist
등이 TestRouteHandler에 의해 체포된다. 라우터에 전달 된 RequestContext.RouteData 객체에 {* fields} 라우트 지정자가 있어야 원하는 작업을 수행 할 수 있습니다. 그러나이 시점에서 기본적으로 다시 쓰기 엔진을 구현하고 있습니다.
public class Routes
{
public static void Register(RouteCollection routes)
{
// setup legacy url routing
routes.Add(new Route("{*fields}",new TestRouteHandler()));
}
}
public class TestRouteHandler : IRouteHandler
{
public virtual IHttpHandler GetHttpHandler(RequestContext requestContext)
{
Page page = BuildManager.CreateInstanceFromVirtualPath("/default.aspx", typeof(Page)) as Page;
return page;
}
}
양자 택일로, 당신은 같은 항목을 잡을 것
routes.Add(new Route("dave/{*fields}",new TestRouteHandler()));
같은 최상위 경로를 지정할 수 있습니다.
http://www.mysite.com/dave
http://www.mysite.com/dave/test/parameter
http://www.mysite.com/dave/virtually/infinite/number/of/items/goes/here
나는 이것을하고 있었지만 잘 작동하지 않았다. 이제는 다음과 같다. 그 금요일의 순간들 중의 하나 였을거야! 해명 해줘서 고마워. –