将ASPX导出为HTML

时间:2008-09-11 11:15:54

标签: asp.net html screen-scraping

我们正在建立一个CMS。该站点将由aspx页面中的用户构建和管理,但我们想创建一个HTML的静态站点。 我们现在的方式是使用代码我发现here重载Aspx页面中的Render方法并将HTML字符串写入文件。这适用于单个页面,但我们的CMS就是我们想要从一开始就为网站自动创建一些HTML页面,甚至在创建者编辑系统中的任何内容之前。 有谁知道有任何方法可以做到这一点?

5 个答案:

答案 0 :(得分:4)

我似乎已经使用Server.Ecxcute方法为我的问题找到了解决方案。

我发现article证明了它的使用:

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

然后我在textWriter上做了一些maniulatons,并将其插入到html文件中。瞧瞧!它有效!

答案 1 :(得分:2)

调用Render方法仍然非常简单。只需创建页面实例,与WebContext对象一起创建存根WebRequest,然后调用页面的Render方法。然后,您可以随意对结果做任何事情。

或者,编写一个小curlwget脚本来下载和存储您想要制作静态的页面。

答案 2 :(得分:2)

您可以使用wget(命令行工具)递归查询每个页面并将它们保存到html文件。它会更新生成的html中的所有必要链接,以引用.html文件而不是.aspx。这样,您可以编写所有站点的代码,就像使用服务器生成的页面一样(更容易测试),然后将其转换为静态页面。

如果出于性能原因需要静态HTML,我的偏好是使用ASP.Net输出缓存。

答案 3 :(得分:2)

我建议您以非常简单的方式执行此操作,而不是在代码中执行此操作。它将允许您的CMS代码执行CMS代码应该执行的操作,并使其尽可能简单。

使用HTTrack等产品。它自称为“网站复印机”。它抓取一个站点并创建html输出。它快速而且免费。你可以让它以你认为最好的频率运行。

它将您的HTML输出需求与CMS设计和实现分离。它可以降低复杂性,并为您提供输出HTML的灵活性,而不会在CMS代码中引入故障点。

答案 4 :(得分:1)

@ckarras:我不想使用外部工具,因为我希望以编程方式而不是手动创建HTML页面。

@jttraino:我没有需要输出网站的时间间隔 - 当用户创建新网站时,必须进行输出。

@Frank Krueger:我真的不明白如何使用WebContext和WebRequest创建我的页面实例。

我在searchdotnet中搜索了“wget”,并在a post上找到了一个名为WebClient的.net类。如果我使用DownloadString()方法,它似乎做我想要的 - 从特定的URL获取一个字符串。问题是因为我们的CMS需要登录到,当方法试图到达页面时它会被抛到登录页面,因此返回login.aspx HTML ...

有关如何从这里继续下去的想法吗?