我们正在建立一个CMS。该站点将由aspx页面中的用户构建和管理,但我们想创建一个HTML的静态站点。 我们现在的方式是使用代码我发现here重载Aspx页面中的Render方法并将HTML字符串写入文件。这适用于单个页面,但我们的CMS就是我们想要从一开始就为网站自动创建一些HTML页面,甚至在创建者编辑系统中的任何内容之前。 有谁知道有任何方法可以做到这一点?
答案 0 :(得分:4)
我似乎已经使用Server.Ecxcute方法为我的问题找到了解决方案。
我发现article证明了它的使用:
TextWriter textWriter = new StringWriter();
Server.Execute("myOtherPage.aspx", textWriter);
然后我在textWriter上做了一些maniulatons,并将其插入到html文件中。瞧瞧!它有效!
答案 1 :(得分:2)
调用Render
方法仍然非常简单。只需创建页面实例,与WebContext
对象一起创建存根WebRequest
,然后调用页面的Render
方法。然后,您可以随意对结果做任何事情。
或者,编写一个小curl
或wget
脚本来下载和存储您想要制作静态的页面。
答案 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 ...
有关如何从这里继续下去的想法吗?