【问题标题】:Simple proxy asp.net error简单的代理 asp.net 错误
【发布时间】:2012-08-23 18:02:19
【问题描述】:

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

我还是不知道怎么回事!

【问题讨论】:

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


    【解决方案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>
    

    对您使用的所有命名空间重复此&lt;%@ Import...%&gt; 指令。或者使用类的完整限定名,包括命名空间,例如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

    【讨论】:

    【解决方案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>
    

    【讨论】:

    • @user131008 - IE9 工作正常。尝试不同的浏览器/版本。然后告诉我们您使用的版本。您可能需要在旧 IE(大约 7 岁及以上)上使用一些技巧来更新您的 contentType
    • Firefox 和 Chrome 一样!除了 Chrome 不会询问您是否要下载!
    • @user131008 - 我更新了 ContentType。再试一次它应该工作。 Text/html 是默认设置,因此您可以根据需要实际删除该行。
    猜你喜欢
    • 2019-08-26
    • 2014-08-16
    • 2011-09-21
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多