0

这个标题很可能让大多数人感到困惑,所以我会彻底解释一下。

这是我得到的错误:

当应用程序未在 UserInteractive 模式下运行时显示模式对话框或表单不是有效操作。指定 ServiceNotification 或 DefaultDesktopOnly 样式以显示来自服务应用程序的通知。

但是,它不会因为在服务器端使用 MsgBox 而被抛出。

混合中的另一个扳手,这只发生在我们当前的生产服务器上。测试服务器的设置与生产环境相同(除了 SSL 证书不同,但这无关紧要),运行完美。开发机器也可以正常工作。

当前在 VB 代码隐藏中使用的代码:

Dim DBconn As New OracleConnect 'Custom class file
Try

        DBconn.Open(Uname, Pword, SelServ)
        If DBconn Is Nothing Then
            errorLabel.Text = "Authentication did not succeed. Check user name and password."
            Exit Sub
        Else
            groups = DBconn.GetUserRole()

            'Create the ticket, and add the groups.
            Dim isCookiePersistent As Boolean = chkPersist.Checked
            Dim authTicket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _
                 txtUsername.Text, DateTime.Now, DateTime.Now.AddMinutes(60), isCookiePersistent, groups)

            'Encrypt the ticket.
            Dim encryptedTicket As String = FormsAuthentication.Encrypt(authTicket)

            'Create a cookie, and then add the encrypted ticket to the cookie as data.
            Dim authCookie As HttpCookie = New HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket)

            If (isCookiePersistent = True) Then
                authCookie.Expires = authTicket.Expiration
            End If
            'Add the cookie to the outgoing cookies collection.
            Response.Cookies.Add(authCookie)

            'set session variables
            Session("UID") = txtUsername.Text
            Session("PWD") = txtPassword.Text
            Session("selServ") = StrServer.SelectedValue

            SetupTableNames()

            'MsgBox(groups, MsgBoxStyle.OkOnly, "HRIS User Role")
            Session("gsRole") = groups

            'You can redirect now.
            'Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUsername.Text, False))
            Response.Redirect("~/Account/_Search.aspx")

        End If

    Catch ex As Exception
        errorLabel.Text = "Error authenticating. " & ex.Message
    End Try

OracleConnect 类的代码:

Public Sub Open(ByVal Uname As String, ByVal Pword As String, ByVal SelServ As String)

    OraDb = "Data Source=" + SelServ +
            ";Persist Security Info=True" +
            ";User Id=" + Uname +
            ";Password=" + Pword

    conn = New OracleConnection(OraDb)
    Try
        conn.Open()
    Catch ex As OracleException
        Select Case ex.Number
            Case 1
                MesgBox("Error attempting to insert duplicate data.", MsgBoxStyle.OkOnly, "HRIS")

            Case 12545
                MesgBox("The database is unavailable.", MsgBoxStyle.Critical, "HRIS")

            Case Else
                MesgBox("Database error: " + ex.Message.ToString(), MsgBoxStyle.Critical, "HRIS")
        End Select

    Catch ex As Exception
        MesgBox(ex.Message.ToString(), MsgBoxStyle.Information, "HRIS")

    End Try
End Sub

我知道类文件中的 MesgBox,但那些引用了一个 Sub 使用 Javascript,它在程序中工作,它已经过测试并且可以正常工作。

所以我的问题是:

在 IIS 7.0 中有什么东西会触发我还没有找到的这个响应服务器端吗?

如果它在 IIS 中不可行,那么我应该研究其他替代方案吗?

编辑:这个问题的解决方案不在于 ASP 或 VB 代码,而在于服务器上设置的 Oracle。对于将来遇到类似问题的任何人,我建议查看 TNS_ADMIN 环境/系统变量和 TNSNAMES.ORA 文件并确保它们是正确的。如果您进行任何这些更改,请确保重新启动服务器。我的步骤涉及验证 TNSNAMES.ORA 文件是否正确,设置了 TNS_ADMIN 环境变量,然后在 cmd 提示符中使用“set tns_admin={filepath}”,毕竟然后重新启动服务器并且站点运行正常。

4

1 回答 1

0

这个问题的解决方案不在于 ASP 或 VB 代码,而在于服务器上设置的 Oracle。对于将来遇到类似问题的任何人,我建议查看 TNS_ADMIN 环境/系统变量和 TNSNAMES.ORA 文件并确保它们是正确的。如果您进行任何这些更改,请确保重新启动服务器。我的步骤涉及验证 TNSNAMES.ORA 文件是否正确,设置了 TNS_ADMIN 环境变量,然后在 cmd 提示符中使用“set tns_admin={filepath}”,毕竟然后重新启动服务器并且站点运行正常。

于 2013-08-05T17:03:57.823 回答