C# 无法访问外部类型的非静态成员

C# 无法访问外部类型的非静态成员,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

错误在TextBox1中。Text和Label2.Text是“外部类型的非静态成员”

除TextBox1.Text和Label2.Text外,其他一切都处于良好的工作状态

程序应获取一个预先存在的ftp文件(服务器端),并将其复制到TextBox1.Text(客户端)中指定的文件中

错误代码:

无法访问外部类型为“FTPDownload”的非静态成员。\u默认值” 通过嵌套类型“FTPDownload.\u Default.\u Default”C:\Users\user\path\Default.aspx.cs

[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)。