Невозможно получить веб-страницу
Я новичок, чем "egg" в.NET и C# и хотел проверить, получаю ли я HTTP Response (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 = "Домашняя страница" Language = "C#" MasterPageFile = "~ / Site.master" AutoEventWireup = "true" Строка 2:
CodeBehind = "Default.aspx.cs" Inherits = "WebApplication6._Default"%> Строка 3:
Любой намек, о том, как решить эту проблему. Очень нуб, так что очень оценят "шаги ребенка".
2 ответа
Я считаю, что ваша проблема в том, что вы используете неправильный тип проекта здесь. Вы видите сообщение об ошибке из ASP.NET. Код, который вы пытаетесь использовать, предназначен для консольного приложения.
Самое простое решение - запустить новый проект и выбрать правильный тип проекта (Консольное приложение).
Если вы действительно хотите, чтобы это был веб-сайт ASP.NET, вам нужно обязательно включить страницу, которая является производной от System.Web.UI.Page.
Ваш код выглядит как консольное приложение, приложение, которое компилируется в.EXE и может быть запущено из командной строки.
Тем не менее, ваше сообщение об ошибке в приложении ASP.NET; приложение, предназначенное для запуска в процессе веб-сервера.
Ваш вопрос был неясен относительно того, какой тип приложения вы на самом деле пытаетесь создать. Если это первое, то все, что вам нужно сделать, это скомпилировать приложение с помощью Visual Studio или csc.exe
как исполняемый файл (что можно сделать, щелкнув правой кнопкой мыши по проекту, выбрав " Свойства" и установив тип вывода " Исполняемый"), и запустите его. Если у вас возникли проблемы, я бы посоветовал просто начать заново и создать новый проект в 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());
}
}