0

我有一个页面需要多次从另一个页面调用。重要的是执行 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()

但是没有输出。有任何想法吗?

4

2 回答 2

1

听起来您可能对HttpServerUtility.Execute()感兴趣。

于 2012-05-09T14:19:30.383 回答
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 进入页面。共享业务逻辑进入业务类。

于 2012-05-09T14:14:00.420 回答