对于一个项目,我必须生成要在远程服务器上发布的静态.html页面。
我必须从c#代码自动创建这些文件,该代码从SQL Server数据库获取数据。
数据将不会经常改变(每4-5个月),这个网站将是高度频繁的。
由于我发现asp.net MVC3的剃刀synthax非常有效,我想知道是否可以使用asp.net MVC3/Razor来生成这些.html页面?
所以:
谢谢你的帮助
编辑
关于答案,我需要做一个精确度:我不想/需要使用web缓存,原因有很多(加载(每月加载数百万页面),集成(我们将页面集成到优化的apache中,网站的另一部分),页面数量(缓存只会帮助我,如果我有很多时间相同的页面,但我将有大约2500个页面,所以根据墨菲定律,除非我设置非常高的缓存超时,否则我将不得不经常生成它们)。所以我真的在搜索一些东西来生成HTML页面。
编辑2我刚得到一个新的约束:/那些模板必须本地化。这意味着我应该拥有与以下剃刀代码等效的代码:@MyLocalizationFile.My.MyValue
目前,我正在考虑做一个动态网站,并在上面调用一些查询来存储生成的。但是,有没有办法避免http?这意味着模拟一个http调用,指定输出流和被调用的url (只有GET调用)。
我们之前的负载数字确实被低估了,实际上他们每天有100多万访问者,大约1400万页面负载/天。
发布于 2012-09-17 15:16:19
最后,我创建了一个普通的asp.net MVC网站,然后使用WebClient在页面上生成页面。
就像这样,我可以预览网站,我可以享受Razor+MVC助手的全部功能。
发布于 2012-06-25 19:19:52
发布于 2012-06-25 20:16:46
你可以使用Razor引擎(NuGet-link,他们的website),这样你就可以在不使用MVC的情况下从控制台应用程序创建模板。
我的用法如下:
public string ParseFile<T>(string fileName, T model) {
var file = File.OpenText(fileName);
var sb = new StringBuilder();
string line;
while ((line = file.ReadLine()) != null)
{
// RazorEngine does not recognize the @model line, remove it
if (!line.StartsWith("@model ", StringComparison.OrdinalIgnoreCase))
sb.AppendLine(line);
}
file.Close();
// Stuff to make sure we get unescaped-Html back:
var config = new FluentTemplateServiceConfiguration(
c => c.WithEncoding(RazorEngine.Encoding.Raw));
string result;
using (var service = new TemplateService(config))
{
return service.Parse<T>(sb.ToString(), model);
}
}
}
https://stackoverflow.com/questions/11188173
复制相似问题