无法获取网页

时间:2013-07-02 19:29:36

标签: c# .net http get

我比.NET和C#中的“egg”更新,并想测试我是否正在获得HTTP响应(GET)。由于在防火墙后工作,我不确定问题是代码还是安全性。

http://www.csharp-station.com/howto/httpwebfetch.aspx

复制的代码

代码:

using System;
using System.IO;
using System.Net;
using System.Text;


/// <summary>
/// Fetches a Web Page
/// </summary>
class WebFetch
{
    static void Main(string[] args)
    {
        // used to build entire input
        StringBuilder sb = new StringBuilder();

        // used on each read operation
        byte[] buf = new byte[8192];

        // prepare the web page we will be asking for
        HttpWebRequest request = (HttpWebRequest)
            WebRequest.Create("http://www.mayosoftware.com");

        // execute the request
        HttpWebResponse response = (HttpWebResponse)
            request.GetResponse();

        // we will read data via the response stream
        Stream resStream = response.GetResponseStream();

        string tempString = null;
        int count = 0;

        do
        {
            // fill the buffer with data
            count = resStream.Read(buf, 0, buf.Length);

            // make sure we read some data
            if (count != 0)
            {
                // translate from bytes to ASCII text
                tempString = Encoding.ASCII.GetString(buf, 0, count);

                // continue building the string
                sb.Append(tempString);
            }
        }
        while (count > 0); // any more data to read?

        // print out page source
        Console.WriteLine(sb.ToString());
    }
}

错误:

  '/'应用程序中的服务器错误。      

分析程序错误说明:解析a期间发生错误   服务此请求所需的资源。请查看以下内容   特定的解析错误详细信息并修改您的源文件   适当。

     

分析程序错误消息:此处不允许“WebApplication6._Default”   因为它没有扩展类'System.Web.UI.Page'。

     

来源错误:

     

第1行:&lt;%@ Page Title =“主页”语言=“C#”   MasterPageFile =“〜/ Site.master”AutoEventWireup =“true”第2行:
  CodeBehind =“Default.aspx.cs”Inherits =“WebApplication6._Default”%&gt;   第3行:

有关如何解决此问题的任何提示。非常棒,所以非常喜欢“婴儿步骤”。

2 个答案:

答案 0 :(得分:1)

您的代码似乎是一个控制台应用程序,一个编译为.EXE的应用程序,可以从命令行运行。

但是,您的错误消息是ASP.NET应用程序的错误消息;一个旨在在Web服务器进程内运行的应用程序。

您的问题不清楚您实际尝试构建的应用程序类型。如果它是前者,那么您需要做的就是使用Visual Studio或csc.exe作为可执行文件编译您的应用程序(可以通过右键单击项目,选择属性和将输出类型设置为可执行),然后运行它。如果你遇到麻烦,我建议你重新开始并在Visual Studio中创建一个新项目,这次选择“Console App”。

如果您正在尝试构建网页,那么您会遇到一些问题。首先,在您的页面指令(<%@ Page ... %>内容)中,您需要将Inherits属性设置为您的类的名称。例如,WebFetch。接下来,此类需要派生自System.Web.UI.Page

/// <summary>
/// Fetches a Web Page
/// </summary>
public class WebFetch : System.Web.UI.Page
{
  //...
}

如果这样做,您应该覆盖Render()方法并直接写入输出流:

/// <summary>
/// Fetches a Web Page
/// </summary>
public class WebFetch : System.Web.UI.Page
{
   protected override void Render(HtmlTextWriter writer)
   {
      // All your code here

      writer.Write(sb.ToString());
   }
}

答案 1 :(得分:1)

我相信你的问题是你在这里使用了错误的项目类型。您看到的错误消息来自ASP.NET。您尝试使用的代码用于控制台应用程序。

最简单的解决方法是启动一个新项目,并确保选择正确的项目类型(控制台应用程序)。

如果您确实希望将其作为ASP.NET网站,则需要确保包含一个派生自System.Web.UI.Page的页面。