vb.net 语句在命名空间中无效

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30821270/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 19:11:51  来源:igfitidea点击:

Statement is not valid in a namespace

vb.netasp.net-membership

提问by Chicken Man

The code below returned Statement is not valid in a namespace using VS-2010. Please review the code and recommend any reasonable fix, Research indicates that I should have the bases covered by importing the presiding namespaces.

下面返回的 Statement 代码在使用 VS-2010 的命名空间中无效。请检查代码并推荐任何合理的修复,研究表明我应该通过导入主命名空间来涵盖基础。

What more should I do to to make it valid?

我还应该怎么做才能使其有效?

The rest of these comments are only here to get past the mandate to be verbose.

这些评论的其余部分只是为了超越冗长的任务。

Imports System
Imports System.Web
Imports System.Web.Security
' MembershipProvider.CreateUser
Public Overrides Function CreateUser(ByVal username As String, _
                                 ByVal password As String, _
                                 ByVal email As String, _
                                 ByVal passwordQuestion As String, _
                                 ByVal passwordAnswer As String, _
                                 ByVal isApproved As Boolean, _
                                 ByVal providerUserKey As Object, _
                                 ByRef status As MembershipCreateStatus) 
                      As MembershipUser
Return Me.CreateUser(username, password, email, _
                     passwordQuestion, passwordAnswer, _
                     isApproved, providerUserKey, False, "", status)
End Function ' 
' OdbcMembershipProvider.CreateUser -- returns OdbcMembershipUser 
' 
Public Overloads Function CreateUser(ByVal username As String, _
                                 ByVal password As String, _
                                 ByVal email As String, _
                                 ByVal passwordQuestion As String, _
                                 ByVal passwordAnswer As String, _
                                 ByVal isApproved As Boolean, _
                                 ByVal providerUserKey As Object, _
                                 ByVal isSubscriber As Boolean, _
                                 ByVal customerID As String, _
                                 ByRef status As MembershipCreateStatus) _
                      As OdbcMembershipUser
Dim Args As ValidatePasswordEventArgs = _
  New ValidatePasswordEventArgs(username, password, True)
OnValidatingPassword(Args)
If Args.Cancel Then
    status = MembershipCreateStatus.InvalidPassword
    Return Nothing 
End If 
If RequiresUniqueEmail AndAlso GetUserNameByEmail(email) <> "" Then
    status = MembershipCreateStatus.DuplicateEmail
    Return Nothing 
End If 
Dim u As MembershipUser = GetUser(username, False)
If u Is Nothing Then 
    Dim createDate As DateTime = DateTime.Now
    If providerUserKey Is Nothing Then
        providerUserKey = Guid.NewGuid()
    Else 
        If Not TypeOf providerUserKey Is Guid Then
            status = MembershipCreateStatus.InvalidProviderUserKey
            Return Nothing 
        End If 
    End If 
    Dim conn As OdbcConnection = New OdbcConnection(connectionString)
    Dim cmd As OdbcCommand = New OdbcCommand("INSERT INTO Users " & _
           " (PKID, Username, Password, Email, PasswordQuestion, " & _
           " PasswordAnswer, IsApproved," & _
           " Comment, CreationDate, LastPasswordChangedDate, LastActivityDate," & _
           " ApplicationName, IsLockedOut, LastLockedOutDate," & _
           " FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart, " & _
           " FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart, " & _
           " IsSubscriber, CustomerID)" & _
           " Values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", conn)

    cmd.Parameters.Add("@PKID", OdbcType.UniqueIdentifier).Value = providerUserKey
    cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username
    cmd.Parameters.Add("@Password", OdbcType.VarChar, 255).Value = EncodePassword(password)
    cmd.Parameters.Add("@Email", OdbcType.VarChar, 128).Value = email
    cmd.Parameters.Add("@PasswordQuestion", OdbcType.VarChar, 255).Value = passwordQuestion
    cmd.Parameters.Add("@PasswordAnswer", OdbcType.VarChar, 255).Value = EncodePassword(passwordAnswer)
    cmd.Parameters.Add("@IsApproved", OdbcType.Bit).Value = isApproved
    cmd.Parameters.Add("@Comment", OdbcType.VarChar, 255).Value = ""
    cmd.Parameters.Add("@CreationDate", OdbcType.DateTime).Value = createDate
    cmd.Parameters.Add("@LastPasswordChangedDate", OdbcType.DateTime).Value = createDate
    cmd.Parameters.Add("@LastActivityDate", OdbcType.DateTime).Value = createDate
    cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = pApplicationName
    cmd.Parameters.Add("@IsLockedOut", OdbcType.Bit).Value = False
    cmd.Parameters.Add("@LastLockedOutDate", OdbcType.DateTime).Value = createDate
    cmd.Parameters.Add("@FailedPasswordAttemptCount", OdbcType.Int).Value = 0
    cmd.Parameters.Add("@FailedPasswordAttemptWindowStart", OdbcType.DateTime).Value = createDate
    cmd.Parameters.Add("@FailedPasswordAnswerAttemptCount", OdbcType.Int).Value = 0
    cmd.Parameters.Add("@FailedPasswordAnswerAttemptWindowStart", OdbcType.DateTime).Value = createDate
    cmd.Parameters.Add("@IsSubscriber", OdbcType.Bit).Value = isSubscriber
    cmd.Parameters.Add("@CustomerID", OdbcType.VarChar, 128).Value = customerID
    Try
        conn.Open()
        Dim recAdded As Integer = cmd.ExecuteNonQuery()
        If recAdded > 0 Then
            status = MembershipCreateStatus.Success
        Else
            status = MembershipCreateStatus.UserRejected
        End If 
    Catch e As OdbcException
        If WriteExceptionsToEventLog Then
            WriteToEventLog(e, "CreateUser")
        End If
        status = MembershipCreateStatus.ProviderError
    Finally
        conn.Close()
    End Try 
    Return GetUser(username, False)
Else
    status = MembershipCreateStatus.DuplicateUserName
End If 
Return Nothing 
End Function

回答by Justin Ryan

Your functions need to be wrapped in a class or module.

您的函数需要包装在一个类或模块中。

Imports System

Class MyFunctions

    Dim MyVariable

    Function MyFunction() 
    End Function

End Class

From Statement is not valid in a Namespaceon MSDN,

From语句在 MSDN 上的命名空间中无效

The statement cannot appear at the level of a namespace. The only declarations allowed at namespace level are module, interface, class, delegate, enumeration, and structure declarations.

To correct this error:

Move the statement to a location within a module, class, interface, structure, enumeration, or delegate definition.

该语句不能出现在命名空间级别。命名空间级别允许的唯一声明是模块、接口、类、委托、枚举和结构声明。

要更正此错误:

将语句移动到模块、类、接口、结构、枚举或委托定义中的某个位置。

回答by DeborahK

In VB.NET functions must reside within a class or a module.

在 VB.NET 中,函数必须驻留在类或模块中。

So after the imports and before the first function, define a class:

所以在导入之后和第一个函数之前,定义一个类:

<imports up here>
Public Class User
<all other code here>
End Class

For more information on object-oriented programming in VB, check out my blog.

有关 VB 中面向对象编程的更多信息,请查看我的博客