将ASPX导出为HTML
我们正在建立一个CMS。该网站将由用户在aspx页面中构建和管理,但是我们想创建一个HTML静态网站。
我们现在使用的方法是在这里找到的代码可以重载Aspx页面中的Render方法并将HTML字符串写入文件。这对于单个页面而言效果很好,但是使用CMS的目的是,我们甚至希望在创建者编辑系统中的任何内容之前就自动为网站自动创建一些HTML页面。
有人知道这样做吗?
解决方案
回答
调用Render
方法仍然非常简单。只需创建页面的实例,然后创建存根WebContext和WebRequest对象,然后调用页面的Render方法即可。然后,我们可以随意对结果进行任何操作。
另外,编写一些" curl"或者" wget"脚本以下载和存储要使其静态的任何页面。
回答
我们可以使用wget(命令行工具)来递归查询每个页面并将其保存到html文件中。它将更新结果html中的所有必要链接,以引用.html文件而不是.aspx。这样,我们就可以对所有站点进行编码,就好像使用服务器生成的页面(更易于测试)一样,然后将其转换为静态页面。
如果仅出于性能原因而需要静态HTML,则我倾向于使用ASP.Net输出缓存。
回答
我建议我们以一种非常简单的方式执行此操作,并且不要在代码中执行此操作。它将允许CMS代码执行CMS代码应做的事情,并使它尽可能简单。
使用诸如HTTrack之类的产品。它自称为"网站复印机"。它对网站进行爬网并创建html输出。它是免费的。我们可以以我们认为最佳的频率运行它。
它使HTML输出需求与CMS设计和实施脱钩。它降低了复杂性,并为我们提供了一些输出HTML的灵活性,而又不会在CMS代码中引入故障点。
回答
@ckarras:我宁愿不使用外部工具,因为我希望以编程方式而不是手动方式创建HTML页面。
@jttraino:我没有一个需要输出站点的时间间隔,当用户创建一个新站点时,必须输入uotput。
@Frank Krueger:我不太了解如何使用WebContext和WebRequest创建页面实例。
我在searchdotnet中搜索" wget",并获得了有关名为WebClient的.net类的帖子。如果我使用DownloadString()方法从特定的URL获取字符串,它似乎可以满足我的要求。问题在于,因为我们的CMS需要登录,所以当该方法尝试访问该页面时,它将被引发到登录页面,并因此返回login.aspx HTML ...
关于我如何可以从这里继续有什么想法?
回答
我似乎已经通过使用Server.Ecxcute方法找到了解决我问题的方法。
我发现一篇文章证明了它的使用:
TextWriter textWriter = new StringWriter(); Server.Execute("myOtherPage.aspx", textWriter);
然后,我对textWriter进行一些操作,并将其插入到html文件中。瞧!有用!