标题很可能让大多数人感到困惑,所以我会彻底解释。
这是我得到的错误:
当应用程序未在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}”,然后重新启动服务器并且网站运行正常。
答案 0 :(得分:0)
此问题的解决方案不在于ASP或VB代码,而是在服务器上设置Oracle。对于将来遇到类似问题的任何人,我建议查看TNS_ADMIN环境/系统变量和TNSNAMES.ORA文件,并确保它们是正确的。如果进行任何这些更改,请确保重新启动服务器。我的步骤涉及验证TNSNAMES.ORA文件是否正确,设置了TNS_ADMIN环境变量,然后在cmd提示符中使用“set tns_admin = {filepath}”,然后重新启动服务器并且网站运行正常。