0

私は .NET および C# の「卵」よりも新しく、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、実行可能ファイル (プロジェクトを右クリックして [プロパティ] を選択し、[出力タイプ] を [実行可能] に設定することで実行できます) としてコンパイルし、実行するだけです。そこで問題が発生した場合は、最初からやり直して、Visual Studio で新しいプロジェクトを作成し、今回は [コンソール アプリ] を選択することをお勧めします。

Web ページを作成しようとしている場合、いくつかの問題があります。まず、ページ ディレクティブ (モノ) で、属性をクラスの名前に<%@ 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 Web サイトにしたい場合は、System.Web.UI.Page から派生したページを含める必要があります。

于 2013-07-02T19:47:29.040 に答える