나는System.Web.Routing을 사용하여 Web Forms에서 URL을 다시 쓰지 않는 방법?
- http://www.myurl.com/default.aspx?campaign=abc 에
에서 다음 URL을 다시 작성을 URL 것이다 ASP.NET (3.5) 웹 양식에 System.Web.Routing을 사용하고 있습니다
코드는 다음과 같습니다.
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add("CampaignRoute", new Route
(
"{campaign_code}",
new CustomRouteHandler("~/default.aspx")
));
}
IRouteHandler 구현 :
public class CustomRouteHandler : IRouteHandler
{
public CustomRouteHandler(string virtualPath)
{
VirtualPath = virtualPath;
}
public string VirtualPath { get; private set; }
public IHttpHandler GetHttpHandler(RequestContext
requestContext)
{
if (requestContext.RouteData.Values.ContainsKey("campaign_code"))
{
var code = requestContext.RouteData.Values["campaign_code"].ToString();
HttpContext.Current.RewritePath(
string.Concat(
VirtualPath,
"?campaign=" + code));
}
var page = BuildManager.CreateInstanceFromVirtualPath
(VirtualPath, typeof(Page)) as IHttpHandler;
return page;
}
그러나 내 기존 영문 페이지에 변경하는 너무 많은 것들이 있습니다 발견 (즉, 자바 스크립트 링크, CSS 파일 링크). 위의 코드 그러나 결국이 아닌 재 작성 단지 필요한 변경을 최소화하기 위해 Request.Redirect 또는 Server.Transfer를을 유지하는 방법이 경우
- 그래서 나는 생각하고있다. 따라서 System.Web.Routing을 사용하는 목적은 전적으로 첫 번째 항목의 URL에 적합하게됩니다.
코드에서 특정 된 것 이외의 나머지 패턴을 무시하는 방법은 무엇입니까?
감사합니다.
URL 재 작성과 URL 라우팅의 차이점은 무엇입니까? 미안 내가 여기서 바보가된다. 그러나 나는 정말로 모른다. – Jeff
ASP.NET 의미에서 URL 다시 쓰기는 ASP.NET에서 사용중인 내부 URL을 변경하여 현재 요청이 처리되는 방식을 변경할 수있는 중간 단계입니다. URL 라우팅은 IHttpHandler에 직접 요청을 매핑하여 URL 다시 쓰기를 사용할 필요가없는 새로운 기능입니다. – Eilon