使用MessageBox服务器端时不会引发与MessageBox相关的错误

时间:2013-08-02 20:49:56

标签: javascript asp.net vb.net iis

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

这是我得到的错误:

当应用程序未在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}”,然后重新启动服务器并且网站运行正常。

1 个答案:

答案 0 :(得分:0)

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