gpt4 book ai didi

.net - 在运行时从数据库呈现 ASPX 页面

转载 作者:行者123 更新时间:2023-12-04 11:17:31 25 4
gpt4 key购买 nike

假设下面的代码:

public class DynamicAspxHandler : IHttpHandler {
bool IHttpHandler.IsReusable { get { return false; } }

void IHttpHandler.ProcessRequest(HttpContext httpContext) {
string aspxContent = PlainASPXContent();
Page page = CreatePage(httpContext, aspxContent);
page.ProcessRequest(httpContext);
}

Page CreatePage(HttpContext context, string aspxContent) {
// How to implement this?
}
}

我该怎么办 实现 CreatePage 基于ASPX的纯字符串内容实例化页面的方法?

请注意,ASPX 字符串本身可以包含对磁盘上现有 MasterPage 的引用。

我意识到这一定存在巨大的性能问题,但在这个阶段,我只想知道如何做到这一点。显然我将不得不缓存结果。

谢谢。

最佳答案

您尝试的路径实际上是从 Web 服务器文件系统以外的其他存储机制加载 ASPX 文件。您已经开始实现其中的一部分,但实际上您甚至不需要自定义 HttpHandler 来执行此操作 - ASP.NET 具有用于指定实际 ASPX 标记的其他源的现有机制。

它被称为 VirtualPathProvider ,并且它允许您替换从磁盘加载文件的默认功能,例如,从 SQL Server 或其他任何有意义的地方加载它们。然后,您可以利用 ASP.NET 自己使用的所有内置编译和缓存。

功能的核心来自 GetFile methodVirtualFile's Open() :

public override VirtualFile GetFile(string virtualPath)
{
//lookup ASPX markup
return new MyVirtualFile(aspxMarkup);
}

//...

public class MyVirtualFile : VirtualFile
{
private string markup;

public MyVirtualFile(string markup)
{
this.markup = markup;
}

public override Stream Open()
{
return new StringReader(this.markup);
}
}

请注意,今天,使用自定义 VirtualPathProvider 确实需要完全信任。但是,很快 ASP.NET 4.0 将可用,它支持中等信任度的 VPP。

关于.net - 在运行时从数据库呈现 ASPX 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1781275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com