我有一个页面,我需要多次从另一个页面调用。重要的是执行Page_Load方法。第一页有这段代码(第一页的名字是Call.aspx):
Dim objWebClient As New WebClient
objWebClient.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)")
Dim objStream As Stream = objWebClient.OpenRead("D:\confirm.aspx")
Dim objSR As New System.IO.StreamReader(objStream)
objWebClient.Dispose()
objStream.Dispose()
这应该调用另一页。它不会执行其他页面。我有以下代码以确保执行确认页面:
Dim objWrite As New System.IO.StreamWriter("c:\aa.txt")
objWrite.WriteLine("Hello")
objWrite.Close()
但没有输出。有什么想法吗?
答案 0 :(得分:1)
听起来您可能对HttpServerUtility.Execute()感兴趣。
答案 1 :(得分:0)
这是做什么的?:
objWebClient.OpenRead("D:\confirm.aspx")
D:\
是否是对网址的引用?看起来你只是调用文件本身,这不会产生你想要的效果。 (忽略驻留在驱动器根目录中的文件......)
ASPX页面本身不可执行。 Web服务器(通常是IIS)必须处理它们的请求并通过.NET运行时等传递这些请求,以便处理服务器端处理。文件本身只是文本,它没有内部手段来解释服务器端代码。这就是Web服务器的用途。
要向Web资源(页面或任何其他Web资源)发出Web请求,您需要使用Web URL。类似于:http://localhost/confirm.aspx
所以该页面需要由Web服务器在某处提供。
更重要的是,不应该必须这样做。如果代码需要由两个页面共享,则应将该代码提取到共享组件中。 “页面”永远不应该“调用另一个页面”(除非它们位于完全独立的服务器上,并且您需要更多的SOA方法)。两个页面都应该调用一个共享组件(一个类,通常可以在自己的程序集中,也可以只在具有页面的Web项目中)。
业务逻辑不在页面中。只有UI进入页面。共享业务逻辑进入业务类。