C# 无法访问外部类型的非静态成员
错误在TextBox1中。Text和Label2.Text是“外部类型的非静态成员” 除TextBox1.Text和Label2.Text外,其他一切都处于良好的工作状态 程序应获取一个预先存在的ftp文件(服务器端),并将其复制到TextBox1.Text(客户端)中指定的文件中 错误代码: 无法访问外部类型为“FTPDownload”的非静态成员。\u默认值” 通过嵌套类型“FTPDownload.\u Default.\u Default”C:\Users\user\path\Default.aspx.csC# 无法访问外部类型的非静态成员,c#,asp.net,ftp,C#,Asp.net,Ftp,错误在TextBox1中。Text和Label2.Text是“外部类型的非静态成员” 除TextBox1.Text和Label2.Text外,其他一切都处于良好的工作状态 程序应获取一个预先存在的ftp文件(服务器端),并将其复制到TextBox1.Text(客户端)中指定的文件中 错误代码: 无法访问外部类型为“FTPDownload”的非静态成员。\u默认值” 通过嵌套类型“FTPDownload.\u Default.\u Default”C:\Users\user\path\Defaul
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
public partial class _Default : System.Web.UI.Page
{
private string host = "ftp://mysite.com";
private string user = "ftp72390003-0";
private string pass = "pass";
private FtpWebRequest ftpRequest = null;
private FtpWebResponse ftpResponse = null;
private Stream ftpStream = null;
private int bufferSize = 2048;
protected void Button1_Click(object sender, EventArgs e)
{
download("GraphingPlanets.exe", TextBox1.Text + "GraphingPlanets.exe");
}
public void download(string remoteFile, string localFile)
{
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(host + "/" + remoteFile));
ftpRequest.Credentials = new NetworkCredential(user, pass);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream();
FileStream localFileStream = new FileStream(localFile, FileMode.Create);
byte[] byteBuffer = new byte[bufferSize];
int bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
try
{
while (bytesRead > 0)
{
localFileStream.Write(byteBuffer, 0, bytesRead);
bytesRead = ftpStream.Read(byteBuffer, 0, bufferSize);
}
}
catch (Exception ex) { Label2.Text = "Write: " + ex.ToString; }
localFileStream.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
}
catch (Exception ex) { Label2.Text = "Total: " + ex.ToString; }
}
Default.aspx
<center><table><tr><td align="center"><br /><br />
<asp:TextBox ID="TextBox1" runat="server">C:/</asp:TextBox></td></tr><tr><td align="center"><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></td></tr><tr><td align="center"><br /><br />
<asp:Label ID="Label2" runat="server" Text=""></asp:Label>
</td></tr></table></center>
C#不像Java。内部类不包含对用于创建它的外部实例的隐式引用。您必须显式地将引用传递给内部类实例,以便它可以使用它
或者,如果您不是要创建内部的“\u Default”类,而是只向外部的“\u Default”类添加代码,那么您应该修复代码,使其不具有嵌套类。ASP.NET页面中有哪个内部类?从错误消息中,此用户在顶层中声明了一个内部的“\u Default”类“_Default”类。由于问题本身并没有提供一个好的代码示例,我无法说明他是如何或为什么这样做的。但从错误消息中可以清楚地看出这一点。这太奇怪了,我甚至没有想到。从ASPX文件中发布顶行(包含@Page)。