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:\Webアドレスへの参照ですか?ファイル自体を呼び出しているように見えますが、探している効果はありません。(ドライブのルートにあるファイルをしばらく無視します...)

ASPXページ自体は実行可能ではありません。Webサーバー(通常はIIS)は、サーバー側の処理を処理するために、それらの要求を処理し、それらの要求を.NETランタイムなどに渡す必要があります。ファイル自体は単なるテキストであり、サーバー側のコードを解釈するための内部手段はありません。それがWebサーバーの目的です。

Webリソース(ページまたはその他のWebリソース)に対してWeb要求を行うには、WebURLを使用する必要があります。次のようなもの:http://localhost/confirm.aspx そのページはWebサーバーによってどこかに提供される必要があります。

ただし、もっと重要なのは、これを行う必要がないという事実です。コードを2ページで共有する必要がある場合は、そのコードを共有コンポーネントに抽出する必要があります。「ページ」は「別のページを呼び出す」必要はありません(完全に別個のサーバー上にあり、SOAアプローチをさらに使用する場合を除く)。両方のページで単一の共有コンポーネントを呼び出す必要があります(クラスは、通常、独自のアセンブリ内にあるか、ページを持つWebプロジェクト内にある可能性があります)。

ビジネスロジックはページには入りません。UIのみがページに入ります。共有ビジネスロジックはビジネスクラスに分類されます。

于 2012-05-09T14:14:00.420 に答える