我比.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());
}
}
错误:
2>'/'应用程序中的服务器错误。分析程序错误说明:解析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行:
有关如何解决此问题的任何提示。非常棒,所以非常喜欢“婴儿步骤”。
答案 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的页面。