我希望引入一种新的服务器脚本语言, 想在页面中加入自己的标示符,在IIS中处理时先把aspx的标示符替换掉,然后把我的标示符替换成对应的aspx标示符,如:<asp:button runat="server" > 替换为 {asp:button ruant="server"} ;而我自己的标示符 [myb:repeater runat="server"] 替换为 <asp:repeater runat="server">。经过IIS得到相应结果,
这样再把响应的结果再次处理把aspx标示符替换回去,存为aspx页面就可以正常运行。 我的想法是在 ASP.NET ISAPI 扩展 处理请求之前先用自己的dll进行上诉的预处理,是否可以使用HttpModule 与IIS中的ISAPI过滤器。但不知具体该如何做,请各位大虾指点!
aspx和aspx.cs最终都要编译成程序集的出现这种需求,往往是因为设计不当
那么还有其他方式可以达到目的吗?出现这种设想的背景是想把静态页面生成与动态需求相结合起来。
http://www.cnblogs.com/RChen/archive/2005/03/22/123190.html是论坛上 inelm(莫依马甲第n号) 的Blog。
http://www.cnblogs.com/RChen/archive/2005/03/22/123190.html
我上去看了一下,木野狐 写的还可以,但是似乎在这不起什么作用。to gxboy(Blin 小学生学.NET)
使用临时文件我也试过,只是生成、删除文件很费时,速度要慢十倍,数据多时有点熬人
但是这个方法并不是静态的,不过这并不影响,因为为了实现IHttpHandler,Page有一个默认的构造函数。所以我们可以很简单的利用new Page().ParseControl来编译aspx文件。然后,又是因为要实现IHttpHandler接口,所以Page的ProcessRequest方法是public的(显示实现接口)。我们可以通过这样来令一个Page对象生成页面((IHttpHandler) page).ProcessRequest( Context );
在http请求的处理过程中,只能调用一个HTTP处理程序,然而可以调用多个HTTP模块
我的替换放在哪里执行呢?
ProcessRequest() 在这个函数里实现
试了一下
执行到 Page newPage = (Page)(new Page().ParseControl(pageContent)); 这句时出错,显示如下:
分析器错误
说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 分析器错误信息: 未知指令“Page”。源错误:
行 1: <%@ Page language="c#" Codebehind="ConfigControl.aspx.cs" AutoEventWireup="false" Inherits="TTL.ConfigControl.ConfigControl" %>
行 2: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
行 3: <HTML>
源文件: 无 行: 1
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573 另外 PageParser.GetCompiledPageInstance 怎么使用啊?
请指点,谢谢!
public static IHttpHandler GetCompiledPageInstance(string virtualPath, string inputFile, HttpContext context)如果用它,看起来得先要生成另一个aspx文件先。
安全和普通ASP.NET页面一样。
我想做的是内网的数据生成静态页面,再通过外网发布,而有些动态交互的功能是其他公司定制的,就希望能在他们的动态页面中嵌入我的脚本语言,发布到外网时不影响已做好动态交互功能。
也许在页面放置Control是最简单的办法了,但我还想试试有无其他更灵活的办法。
是的,真的会弹出"hello!"。因为客户是产品的使用者,是网站的拥有者。
如果Sharepoint2003开源的话我就可以知道怎么实现了,可惜不开源,也很贵.
请帮忙找找Sharepoint.dll,万分感谢
[email protected]
你发的邮件已收到,谢谢!
可惜本人水平有限,未能找到,遗憾!
你说的方法也早就试过,使用中间过渡文件,但速度却差一个数量级,数据量大时就很慢了。to cat_hsfz() :
你说的我来找找
我研究了一下Cassini,发现它只是个宿主,调用了相关程序而已,并没有具体细节体现。看来只有把希望寄托在ASP。NET2.0了。
首先感谢您的关心!
Cassini也是调用相关API,它的调用还是太粗,没有具体价值