简单代理asp.net错误

时间:2012-08-23 18:02:19

标签: c# asp.net error-handling compiler-errors runtime-error

我不知道为什么这个.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>

我仍然不知道出了什么问题!

2 个答案:

答案 0 :(得分:1)

您不能拥有“全局”代码,您必须将其封装在方法中。

类似的东西:

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

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

这会在加载页面期间执行您的代码。

(我没有检查你的代码是否有意义。这个谷歌对我来说有点奇怪......)

<强>更新

您还需要import您需要的命名空间,例如:对于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

第二次更新:

好的,这只是一个疯狂的猜测,要删除(其中一个?)逻辑错误:

而不是:

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

写:

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

并查看它是否更有效(根据您使用的评论this answer)。

第三次(最终?)更新:

如果这也无济于事,请尝试在Visual Studio(Express)中调试它并设置断点,逐步执行代码,检查变量等。Here is a short introduction to debugging

答案 1 :(得分:0)

使用单个文件页模型有两个问题阻止您的代码工作。 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>