无法获取网页
本文关键字:网页 获取 | 更新日期: 2023-09-27 18:20:42
我在.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行:<%@页面标题="主页"语言="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"第2行:
CodeBehind="Default.aspx。cs"Inherits="WebApplication6._Default"%>第3行:
关于如何解决这个问题的任何提示。非常noob所以会非常欣赏"婴儿步"。
我认为您的问题是您在这里使用了错误的项目类型。您看到的错误消息来自ASP.NET。您尝试使用的代码用于控制台应用程序。
最简单的修复方法是启动一个新项目,并确保选择正确的项目类型(控制台应用程序)。
如果您确实希望它是一个ASP.NET网站,则需要确保包含一个从System.Web.UI.page.
您的代码似乎是控制台应用程序的代码,该应用程序编译为.EXE,可以从命令行运行。
但是,您的错误消息是ASP.NET应用程序的错误消息;设计用于在web服务器的进程中运行的应用程序。
您的问题不清楚您实际上正在尝试构建哪种类型的应用程序。如果是前者,那么你所需要做的就是用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());
}
}