0

この .aspx が私に与える理由がわかりません:...

ダウンロードプロンプト、面倒なダウンロード。

何が悪いのかわかりません。

私のコード:

  <%@ Page Language="C#" %>


<script runat="server">
        protected void Page_Load(object sender, EventArgs e)
      {
        var strURL = "http://www.google.com";

        System.Net.WebResponse objResponse = default(System.Net.WebResponse);
        System.Net.WebRequest objRequest = default(System.Net.WebRequest);
        string result = null;
        objRequest = System.Net.HttpWebRequest.Create(strURL);
        objResponse = objRequest.GetResponse();
        System.IO.StreamReader sr = new System.IO.StreamReader(objResponse.GetResponseStream());
        result = sr.ReadToEnd();
        //clean up StreamReader 
        sr.Close();

        //WRITE OUTPUT
        Response.ContentType = "application/html";
        Response.Write(result);//""
        Response.Flush();//""

    }
</script>

いまだに何が悪いのかわからない!

4

2 に答える 2

1

「グローバル」コードを持つことはできません。メソッド内にカプセル化する必要があります。

何かのようなもの:

<%@ Page Language="C#" %>

<script runat="server">
    protected void Page_Load( object sender, EventArgs e )
    {
        // Your code...
    }
</script>

これにより、ページの読み込み中にコードが実行されます。

(あなたのコードが理にかなっているかどうかはチェックしていません。この Google のことは私には奇妙に見えます...)

アップデート:

次のように、必要な名前空間をインポートWebResponseする必要もあります。

<%@ Page Language="C#" %>
<%@ Import namespace="System.Net" %>

<script runat="server">
    protected void Page_Load( object sender, EventArgs e )
    {
        // Your code...
    }
</script>

使用するすべての名前空間に対してこのディレクティブを繰り返し<%@ Import...%>ます。または、名前空間を含むクラスの完全修飾名を使用します (例: System.Net.WebResponse.

2 回目の更新:

OK、これは論理エラー (の 1 つ?) を削除するための単なる大げさな推測です。

それ以外の:

var strURL = context.Server.UrlDecode(context.Request["http://www.google.com"]);

書きます:

var strURL = "http://www.google.com";

そして、それがよりうまく機能するかどうかを確認してください(この回答を使用しているというコメントに基づいて)。

3番目(最終?)の更新:

これでも問題が解決しない場合は、Visual Studio (Express) 内でデバッグしてみてください。ブレークポイントを設定し、コードをステップ実行し、変数を調べます。デバッグの簡単な紹介を次に示します。

于 2012-08-23T18:05:52.437 に答える
0

単一ファイル ページ モデルを使用すると、コードの動作を妨げる 2 つの問題があります。page_load メソッドの署名が間違っており、コンテキストが既に存在し、渡されていません。コードを次のように更新します。

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
  {
        var strURL = "http://www.google.com";

        System.Net.WebResponse objResponse = default(System.Net.WebResponse);
        System.Net.WebRequest objRequest = default(System.Net.WebRequest);
        string result = null;
        objRequest = System.Net.HttpWebRequest.Create(strURL);
        objResponse = objRequest.GetResponse();
        System.IO.StreamReader sr = new System.IO.StreamReader(objResponse.GetResponseStream());
        result = sr.ReadToEnd();
        //clean up StreamReader 
        sr.Close();

        //WRITE OUTPUT
        Response.ContentType = "text/html";//remove context
        Response.Write(result);//""

    }
</script>
于 2012-08-23T19:13:28.307 に答える