2008-09-11 1 views
5

우리는 CMS를 구축하고 있습니다. 이 사이트는 aspx 페이지의 사용자가 만들고 관리하지만 HTML의 정적 사이트를 만들고 싶습니다. 우리가 지금하고있는 방식은 Aspx 페이지에서 Render 메서드를 오버로드하고 HTML 문자열을 파일에 쓰는 코드가있는 here입니다. 이 기능은 단일 페이지에서도 잘 작동하지만 CMS를 사용하면 제작자가 시스템에서 어떤 것을 편집하기 전에도 처음부터 사이트에 대한 몇 가지 HTML 페이지를 자동으로 만들고 싶어합니다. 누구든지이 작업을 수행 할 수있는 방법을 알고 있습니까?ASPX를 HTML로 내보내기

답변

2

Render 메서드를 호출하는 것은 여전히 ​​매우 간단합니다. 페이지의 인스턴스를 만들고 WebRequest 개체와 함께 WebContext 스텁을 만들고 페이지의 Render 메서드를 호출하면됩니다. 그 결과로 원하는대로 자유롭게 할 수 있습니다.

또는 curl 또는 wget 스크립트를 작성하여 정적으로 만들 페이지를 다운로드하고 저장하십시오.

2

wget (명령 줄 도구)을 사용하여 각 페이지를 반복적으로 쿼리하여 html 파일에 저장할 수 있습니다. 결과 HTML에서 필요한 모든 링크를 .aspx 대신 .html 파일을 참조하도록 업데이트합니다. 이렇게하면 서버 생성 페이지 (테스트하기 쉽도록)를 사용하는 것처럼 모든 사이트를 코딩 한 다음 정적 페이지로 변환 할 수 있습니다.

성능상의 이유로 정적 HTML이 필요한 경우 ASP.Net 출력 캐싱을 사용하는 것이 좋습니다.

2

아주 간단한 방법으로 코드에서 수행하지 않는 것이 좋습니다. 그것은 당신의 CMS 코드가 CMS 코드가하는 일을 할 수있게 해주고 가능한 한 간단하게 유지할 것입니다.

HTTrack과 같은 제품을 사용하십시오. 그것은 스스로를 "웹 사이트 복사기"라고 부릅니다. 그것은 사이트를 크롤 링하고 HTML 출력을 만듭니다. 그것은 빠르고 무료입니다. 당신은 당신이 생각하는 어떤 주파수로도 달릴 수 있습니다.

HTML 출력 요구 사항을 CMS 디자인 및 구현과 분리합니다. 복잡성을 줄이고 CMS 코드에 오류 지점을 삽입하지 않고 HTML을 출력하는 방법에 유연성을 제공합니다.

1

@ckarras : HTML 페이지를 프로그래밍 방식으로 만들고 수동으로 만들지 않기 때문에 외부 도구를 사용하지 않을 것입니다.

@jttraino : 사이트를 출력해야하는 시간 간격이 없습니다. 사용자가 새 사이트를 만들 때 uotput이 발생해야합니다.

@ 프랭크 크루거 : WebContext와 WebRequest를 사용하여 내 페이지의 인스턴스를 만드는 방법을 이해하지 못합니다.

searchdotnet에서 "wget"을 검색하고 WebClient라는 .net 클래스에 대해 a post에 도달했습니다. 그것은 DownloadString() 메서드를 사용하면 원하는 것을 할 것 - 특정 URL에서 문자열을 가져옵니다. 문제는 CMS가 로그인해야하기 때문에 메서드가 페이지에 도달하려고 시도 할 때 로그인 페이지에 던져져 login.aspx HTML을 반환한다는 것입니다.

어떻게 생각합니까? 여기에서 계속할 수 있습니까?

4

Server.Ecxcute 메서드를 사용하여 내 문제에 대한 해결책을 찾은 것 같습니다.

TextWriter textWriter = new StringWriter(); 
Server.Execute("myOtherPage.aspx", textWriter); 

그럼 내가 TextWriter에서에 몇 maniulatons를 수행하고 html 파일에 삽입 :

나는 그것의 사용을 demonstared article을 발견했다. Et voila! 그것은 작동합니다!

+0

기사에서 너무 많이 찾았습니다. 차라리 더 간단하게 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/fb04e8f7.aspx –