0

我比 .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());
    }
}

错误:

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

解析器错误描述:解析服务此请求所需的资源时发生错误。请查看以下特定的解析错误详细信息并适当地修改您的源文件。

解析器错误消息:此处不允许使用“WebApplication6._Default”,因为它没有扩展类“System.Web.UI.Page”。

源错误:

第 1 行:<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 第 2 行:
CodeBehind="Default.aspx.cs" Inherits="WebApplication6._Default " %> 第 3 行:

任何提示,关于如何解决这个问题。非常菜鸟,所以会非常欣赏“婴儿步骤”。

4

2 回答 2

1

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

但是,您的错误消息是 ASP.NET 应用程序的错误消息;设计用于在 Web 服务器进程中运行的应用程序。

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

如果您正在尝试构建网页,那么您会遇到一些问题。首先,在您的页面指令(<%@ 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());
   }
}
于 2013-07-02T19:44:08.030 回答
1

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

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

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

于 2013-07-02T19:47:29.040 回答