asp.net에서 동적 페이지 파일 이름을 달성하는 방법은 무엇입니까?
문제
내 웹 사이트에서 동적 컨텐츠에 대한 검색 엔진에서 최적화 된 링크를 만들고 싶습니다 (쿼리 스트링을 통해 데이터를 찾는 대신). 그래서:
mysite/SomeModifiableNname.aspx대신에
mysite/DynamicContent.aspx?entryID=2345.
요청을 리디렉션하는 스마트 404 핸들러 또는 IIS의 사용자 정의 MIME 유형 핸들러 외에도 ASP.NET에 좋은 솔루션이 있습니까?
페이지 파일 이름을 런타임에 변경할 수 있어야합니다.
해결책 4
모두의 생각에 감사드립니다. 제공된 정보를 사용하면 필요한 솔루션을 발견했습니다.
Global.asax (또는 HTTPModule을 통해)에서 BeginRequest 이벤트를 듣고 컨텍스트를 적용하십시오.
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
{
Context.RewritePath("Default.aspx?id=Games");
}
}
그런 다음 이러한 요청을 처리 할 페이지의 onpreinit 방법에서 Postbacks가 적절하게 작동하도록 다시 적용해야합니다.
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Request.QueryString["id"] == null)
return;
if (Request.QueryString["id"].ToLower().Equals("games"))
Context.RewritePath("Games", "", "id=Games");
}
이 작동이 내가 만난 많은 URL에 대한 리팅 모듈보다 더 나은 핵심은 경로가 역동적 일 수 있다는 것입니다. 즉, 생성 된 URL은 데이터 중심 일 수 있습니다.
다른 팁
당신은 a를 사용할 수 있습니다 httphandler, 본 것처럼 여기.
이것은 일반적으로 URL 재 작성이라고하는 광범위한 주제입니다 ...
이것을 달성하는 방법에는 여러 가지가 있습니다. IIS 재 작성 모듈을 살펴 보는 것이 좋습니다.
아마도 MVC 용으로 개발되었으며 ASP.NET 3.51에서 사용할 수있는 URL 라우팅 용량도 조사해야합니다.
업데이트 : 나는 당신의 의도에 대해 더 많이 알고 있기를 바랍니다. 그 마지막 문장은 나를 혼란스럽게합니다.
과거에 urlrewrite.net과 함께이 작업을 수행했습니다. IIS7에는이를위한 내장 시설도 있습니다.